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