C#移位運算(左移和右移)是什麼意思

在C#中,移位運算指的是將一個數字中的位元進行移動的運算。這包括了左移運算(<<)和右移運算(>>)。

左移運算(<<): 左移運算會將一個數字的二進制表示法向左移動指定的位數,右邊空出的位元會補充0。例如:

int number = 5; // 二進制表示為 00000101
int shifted = number << 2; // 左移2位,得到 01010000
Console.WriteLine(shifted); // 輸出:20

在上面的例子中,數字5左移2位後,等於將其乘以4(因為每左移一位相當於乘以2),所以結果是20。

右移運算(>>): 右移運算會將一個數字的二進制表示法向右移動指定的位數,左邊空出的位元會根據不同的移位類型(有符號數字或無符號數字)補充0或1。例如:

int number = 5; // 二進制表示為 00000101
int shifted = number >> 1; // 右移1位,得到 00000010
Console.WriteLine(shifted); // 輸出:2

在上面的例子中,數字5右移1位後,等於將其除以2,所以結果是2。

需要注意的是,對於有符號數字(如int, long),右移運算會保持符號位不變,這意味著如果右移超過了數字的有效位數,則會在最高位補充符號位的副本(即如果數字是負數,則補充1;如果是正數,則補充0)。對於無符號數字(如uint, ulong),右移運算會在左邊補充0。

移位運算通常用於位元操作,比如在編程中進行邏輯運算、設置或清除特定的位,或者進行高效的大數運算。