Java運算子>>與>>>區別詳解

狂奔的蝸牛Evan發表於2020-12-28

1、>>

帶符號右移(相當於除以2)。正數右移高位補0,負數右移高位補1。比如:

4 >> 1,4的原碼為0000 0000 0000 0000 0000 0000 0000 0100,右移一位後為0000 0000 0000 0000 0000 0000 0000 0010,轉成十進位制為2。

-4 >> 1,-4的原碼為1000 0000 0000 0000 0000 0000 0000 0100,補碼為1111 1111 1111 1111 1111 1111 1111 1100,右移一位後為1111 1111 1111 1111 1111 1111 1111 1110,再轉成原碼為1000 0000 0000 0000 0000 0000 0000 0010,轉成十進位制為-2。

2、>>>

無符號右移。無論是正數還是負數,高位通通補0。比如:

4 >>> 1,4的原碼為0000 0000 0000 0000 0000 0000 0000 0100,右移一位後為0000 0000 0000 0000 0000 0000 0000 0010,轉成十進位制為2。

-4 >>> 1,-4的原碼為1000 0000 0000 0000 0000 0000 0000 0100,補碼為1111 1111 1111 1111 1111 1111 1111 1100,右移一位後為0111 1111 1111 1111 1111 1111 1111 1110,由於右移後符號位為1,即變成正數,所以原碼與補碼一樣為0111 1111 1111 1111 1111 1111 1111 1110,轉成十進位制為2147483646。

 

 

原文地址:https://blog.csdn.net/jy1690229913/article/details/88574339

 

相關文章