C語言中移位運算有兩種方式:左移和右移。
左移運算:用"<<"表示,將一個數的各二進位全部左移若干位,高位丟棄,低位補0。例如,將數a左移n位后,得到的結果為a << n。
右移運算:用">>"表示,將一個數的各二進位全部右移若干位,低位丟棄,高位補0或補1,取決于原數的符號位。例如,將數a右移n位后,得到的結果為a >> n。
需要注意的是,右移運算在有符號數和無符號數之間有不同的行為。對于有符號數,右移運算會保留符號位,即用符號位進行填充;而對于無符號數,右移運算會用0進行填充。
以下是一些移位運算的示例:
#include <stdio.h>
int main() {
int a = 5; // 二進制表示為 0000 0101
int b = a << 2; // 左移2位,結果為 0001 0100,即20
int c = a >> 1; // 右移1位,結果為 0000 0010,即2
printf("a << 2 = %d\n", b);
printf("a >> 1 = %d\n", c);
return 0;
}
輸出結果為:
a << 2 = 20
a >> 1 = 2