java中无符号右移怎么移_Java | java中>>(右移)和>>>(无符号右移)的区别...
1. >> 右移
二進(jìn)制碼整體右移,如果最高位是0,左移空的位就填入0;如果最高位是1,右移空的位就填入1。
正數(shù)有符號(hào)右移
首先計(jì)算4>>2
將4轉(zhuǎn)為二進(jìn)制
0000 0100
右移兩位,符號(hào)位為0,所以高位置0得
0000 0001
轉(zhuǎn)二進(jìn)制得 1
所以 4>>2 =1
負(fù)數(shù)有符號(hào)右移
再來計(jì)算-4>>2
首先我們需要取得-4的補(bǔ)碼 補(bǔ)碼為反碼+1
反碼為正碼按位取反
由正碼0000 0100? 取反得
1111 1011
再+1得
1111 1100
右移兩位,符號(hào)位為1,所以高位置1得
1111 1111
此時(shí)減一得補(bǔ)碼
1111 1110
補(bǔ)碼轉(zhuǎn)正碼得
0000 0001
十進(jìn)制為1,加負(fù)號(hào)得
-1
2.>>> 無符號(hào)右移
二進(jìn)制碼整體右移,左邊符號(hào)位用0補(bǔ)上(不管是符號(hào)位是什么),右邊超出部分舍棄;
正數(shù)無符號(hào)右移
6>>>2
正數(shù)無符號(hào)右移
取6的二進(jìn)制
0000?0000?0000?0000?0000?0000?0000 0110
右移2位,最高位置0
0000?0000?0000?0000?0000?0000?0000 0001
轉(zhuǎn)為10進(jìn)制得
1
負(fù)數(shù)無符號(hào)右移
-6 >>>2
先得6的二進(jìn)制
0000 0000 0000 0000 0000 0000 0000 0110
按位取反,得反碼
1111 1111 1111 1111 1111 1111 1111 1001
反碼+1得補(bǔ)碼
1111?1111?1111?1111?1111?1111?1111?1010
右移,高位置0得
0011?1111?1111?1111?1111?1111?1111?1110
轉(zhuǎn)10進(jìn)制得
1073741822
總結(jié)
以上是生活随笔為你收集整理的java中无符号右移怎么移_Java | java中>>(右移)和>>>(无符号右移)的区别...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java反射总结_java反射总结
- 下一篇: java web基础编程题_云课堂jav