在C語言中,位移操作有以下幾種方法:
左移操作(<<):將一個數的所有二進制位向左移動指定的位數。例如,將數值10(二進制為1010)左移2位,即為40(二進制為101000)。
右移操作(>>):將一個數的所有二進制位向右移動指定的位數。右移操作分為算術右移和邏輯右移兩種。
算術右移:對于有符號數,右移時符號位不變,高位用符號位填充。例如,將-10(二進制為11111111111111111111111111110110)右移2位,即為-3(二進制為11111111111111111111111111111101)。
邏輯右移:對于無符號數,右移時高位都用0填充。例如,將10(二進制為00000000000000000000000000001010)右移2位,即為2(二進制為00000000000000000000000000000010)。
位與操作(&):對兩個二進制數的對應位執行與運算,只有當兩個對應位都為1時,結果為1;否則結果為0。例如,將10(二進制為00000000000000000000000000001010)與3(二進制為00000000000000000000000000000011)進行位與操作,結果為2(二進制為00000000000000000000000000000010)。
位或操作(|):對兩個二進制數的對應位執行或運算,只有當兩個對應位都為0時,結果為0;否則結果為1。例如,將10(二進制為00000000000000000000000000001010)與3(二進制為00000000000000000000000000000011)進行位或操作,結果為11(二進制為00000000000000000000000000001011)。
位異或操作(^):對兩個二進制數的對應位執行異或運算,只有當兩個對應位不同時,結果為1;否則結果為0。例如,將10(二進制為00000000000000000000000000001010)與3(二進制為00000000000000000000000000000011)進行位異或操作,結果為9(二進制為00000000000000000000000000001001)。
取反操作(~):對一個二進制數的所有位取反,即0變為1,1變為0。例如,將10(二進制為00000000000000000000000000001010)進行取反操作,結果為-11(二進制為11111111111111111111111111110101)。
這些位移操作可以用于對數據的二進制表示進行位級操作和位運算。