左移運算子和右移運算子

2021-10-11 02:25:13 字數 862 閱讀 6111

左移操作(<<)

規則:右邊空出的位用0填補

高位左移溢位則捨棄該高位。

例如:10 的二進位制為 0000 1010 ,那麼10左移3為就是 0101 0000,結果就是80.

10<<3 ==80

右移操作(>>)

規則:左邊空出的位用0或者1填補。正數用0填補,負數用1填補。注:不同的環境填補方式可能不同;

低位右移溢位則捨棄該位。

例如:20 的二進位制為 0001 0100 ,那麼10右移3為就是 0000 0010,結果就是2。

20>>3 ==2

常見應用

左移相當於2,只是要注意邊界問題。如char a = 65; a<<1 按照2來算為130;但有符號char的取值範圍-128~127,已經越界,多超出了3個數值,所以從-128算起的第三個數值-126才是a<<1的正確結果。

而右移相當於除以2,只是要注意移位比較多的時候結果會趨近去乙個非常小的數,如上面結果中的-1,0。

乙個是「&」資料按位與,兩個「&&」是邏輯與,或也一樣。

按位與運算(&)

1、與0相與可清零

2、與1相與可保留原值

按位或運算(|)

1、與0相或可保留原值

2、與1相與可齊設1

異或運算(^)

1、與0異或保留原值

2、與1異或位元值反轉

3、可通過某種演算法,使用異或實現交換兩個值

異或運算是有結合律的

取反(~)

左移右移運算子(2)

先看如下一段左移右移的 及其結果 include stdio.h char leftshift char i,int n int main 結果 127 1 2 127 2 4 127 3 8 127 4 16 127 5 32 127 6 64 127 7 128 127 8 0 1 1 2 1 ...

Java的左移和右移運算子

左移運算子,num 1 相當於num乘以2 右移運算子,num 1 相當於num除以2 比如num是40 10進製 對應的二進位制為 101000 2的5次方x1 2的4次方x4 2的3次方x1 2的2次方x0 2的1次方x0 2的0次方x0 二進位制轉換為十進位制方法原始方法 左移一位 左移一位是...

左移運算子

左移運算子 表示將乙個數的二進位制值向左移動指定的位數,尾部補0,即乘以2的指定次方 最高位即符號位不參與移動 4 的二進位制形式為100,左移一位為1000 即十進位制的8 相當於乘以2的1次方 4 1 8 4 1 8上面 中,4左移一位得到 8,是因為 4的二進位制形式是111111111111...