Java中》和》移位操作符的區別

2021-07-02 14:09:24 字數 1576 閱讀 5012

大家都知道》是比較兩個物件的大小,那》和》的區別呢?

>>和》都是移位操作;對正數的移位操作它們的功能都是一樣的,如下:

檢視源**

列印幫助

115>>2=3

215>>>2=3

其實就是將15除於4,得到的商。轉換為二進位制可能更直觀(為了方便,下面的二進位制操作我們都是以八位進行的,而不是32位):

100001111>>2=00000011=3,低位被丟失了

200001111>>>2=00000011=3,低位也被丟失了

對正數的操作它們的效果都是一樣的,那麼對於負數的移位是否也是一樣呢?看下面例子就知道了:

1-15>>2= -4

2-15>>>2=60

怎麼會是這樣的?負數的移位操作怎麼變成正數了?同樣我們將上面的式子轉換為二進位制來看看。首先我們得知道,在計算機中,負數是以補碼的形式儲存的(補碼不知道?那你自己去好好學習點基礎知識吧!)-15的補碼是11110001,所以上面的操作轉換為二進位制如下所示:

111110001>>2=11111100(還是乙個負數,轉換為十進位制就是-4

211110001>>>2=00111100(這變成了正數了,轉換成十進位制就是60

根據上面的結果,我們可以清楚的看出:

1、當移位的數是正數的時候,>> 和》效果都是一樣的;

2、當移位的數是負數的時候,>>將二進位制高位用1補上,而》將二進位制高位用0補上,這就導致了》將負數的移位操作結果變成了正數(因為高位用0補上了)

Java中》和》移位操作符的區別

大家都知道 是比較兩個物件的大小,那 和 的區別呢?和 都是移位操作 對正數的移位操作它們的功能都是一樣的,如下 115 2 3 215 2 3 其實就是將15除於4,得到的商。轉換為二進位制可能更直觀 為了方便,下面的二進位制操作我們都是以八位進行的,而不是32位 100001111 2 0000...

Java 移位操作符

左移運算子,按照操作符右側指定的位數將操作符左邊的運算元向左移動 在低位補零 例如 num 1,相當於num乘以2 左移的規則只記住一點 丟棄最高位,0補最低位 運算規則 按二進位制的形式把所有數字向左移動對應的位數,高位移出 捨棄 高低位的空位補0.如果移動的位數超過了該型別的最大位數,編譯器會對...

Java移位操作符以及按位操作符

按位操作符 針對兩個整數引數中的對應位執行布林代數運算,並生成乙個結果。按位與 如果兩個輸入位都是1則生成乙個輸出位1,否則生成乙個輸出位0。按位或 如果兩個輸入位只要有一位是1則生成乙個輸出位1.否則生成乙個輸出位為0。按位異或 如果兩個輸入位只有其中一位是1那麼生成輸出位1,否則生成乙個輸出位為...