大家都知道》是比較兩個物件的大小,那》和》的區別呢?
>>和》都是移位操作;對正數的移位操作它們的功能都是一樣的,如下:
1
15
>>
2
=
3
2
15
>>>
2
=
3
其實就是將15除於4,得到的商。轉換為二進位制可能更直觀(為了方便,下面的二進位制操作我們都是以八位進行的,而不是32位):
1
0000
1111
>>
2
=
00000011
=
3
,低位被丟失了
2
0000
1111
>>>
2
=
00000011
=
3
,低位也被丟失了
對正數的操作它們的效果都是一樣的,那麼對於負數的移位是否也是一樣呢?看下面例子就知道了:
1
-
15
>>
2
= -
4
2
-
15
>>>
2
=
60
怎麼會是這樣的?負數的移位操作怎麼變成正數了?同樣我們將上面的式子轉換為二進位制來看看。首先我們得知道,在計算機中,負數是以補碼的形式儲存的(補碼不知道?那你自己去好好學習點基礎知識吧!)-15的補碼是11110001,所以上面的操作轉換為二進位制如下所示:
1
11110001
>>
2
=
11111100
(還是乙個負數,轉換為十進位制就是-
4
)
2
11110001
>>>
2
=
00111100
(這變成了正數了,轉換成十進位制就是
60
)
根據上面的結果,我們可以清楚的看出:
1、當移位的數是正數的時候,>> 和》效果都是一樣的;
2、當移位的數是負數的時候,>>將二進位制高位用1補上,而》將二進位制高位用0補上,這就導致了》將負數的移位操作結果變成了正數(因為高位用0補上了)。
e-mail:[email protected]
Java中》和》移位操作符的區別
大家都知道 是比較兩個物件的大小,那 和 的區別呢?和 都是移位操作 對正數的移位操作它們的功能都是一樣的,如下 檢視源 列印幫助 115 2 3 215 2 3 其實就是將15除於4,得到的商。轉換為二進位制可能更直觀 為了方便,下面的二進位制操作我們都是以八位進行的,而不是32位 1000011...
Java 移位操作符
左移運算子,按照操作符右側指定的位數將操作符左邊的運算元向左移動 在低位補零 例如 num 1,相當於num乘以2 左移的規則只記住一點 丟棄最高位,0補最低位 運算規則 按二進位制的形式把所有數字向左移動對應的位數,高位移出 捨棄 高低位的空位補0.如果移動的位數超過了該型別的最大位數,編譯器會對...
Java移位操作符以及按位操作符
按位操作符 針對兩個整數引數中的對應位執行布林代數運算,並生成乙個結果。按位與 如果兩個輸入位都是1則生成乙個輸出位1,否則生成乙個輸出位0。按位或 如果兩個輸入位只要有一位是1則生成乙個輸出位1.否則生成乙個輸出位為0。按位異或 如果兩個輸入位只有其中一位是1那麼生成輸出位1,否則生成乙個輸出位為...