c語言中的左移和右移運算子移位後的結果老是忘記,最近在刷有關位操作的題目,正好整理下:
1. 左移運算子(<<)
左移運算子是用來將乙個數的各二進位制位左移若干位,移動的位數由右運算元指定(右運算元必須是非負值),其右邊空出的位用0填補,高位左移溢位則捨棄該高位。
2. 右移運算子(>>)
右移運算子是用來將乙個數的各二進位制位右移若干位,移動的位數由右運算元指定(右運算元必須是非負值),移到右端的低位被捨棄,對於無符號數,高位補0。對於有符號數,某些機器將對左邊空出的部分用符號位填補(即「算術移位」),而另一些機器則對左邊空出的部分用0填補(即「邏輯移位」)。注意:對無符號數,右移時左邊高位移入0;對於有符號的值,如果原來符號位為0(該數為正),則左邊也是移入0。如果符號位原來為1(即負數),則左邊移入0還是1,要取決於所用的計算機系統。有的系統移入0,有的系統移入1。移入0的稱為「邏輯移位」,即簡單移位;移入1的稱為「算術移位」。
參考部落格:
C語言之左移和右移運算子
左移運算子 左移運算子是用來將乙個數的各二進位制位左移若干位,移動的位數由右運算元指定 右運算元必須是非負 值 其右邊空出的位用 0填補,高位左移溢位則捨棄該高位。右移運算子 右移運算子是用來將乙個數的各二進位制位右移若干位,移動的位數由右運算元指定 右運算元必須是非負值 移到右端的低位被捨棄,對於...
C語言之左移和右移運算子
左移運算子是用來將乙個數的各二進位制位左移若干位,移動的位數由右運算元指定 右運算元必須是非負值 其右邊空出的位用0填補,高位左移溢位則捨棄該高位。右移運算子是用來將乙個數的各二進位制位右移若干位,移動的位數由右運算元指定 右運算元必須是非負值 移到右端的低位被捨棄,對於無符號數,高位補0。對於有符...
左移運算子和右移運算子
左移操作 規則 右邊空出的位用0填補 高位左移溢位則捨棄該高位。例如 10 的二進位制為 0000 1010 那麼10左移3為就是 0101 0000,結果就是80.10 3 80 右移操作 規則 左邊空出的位用0或者1填補。正數用0填補,負數用1填補。注 不同的環境填補方式可能不同 低位右移溢位則...