java中二進制相關運算


1.計算十進制數的二進制
int i1=Integer.parseInt("11",2);//11的二進制
41---》41=32+8+1=2^5+2^3+1
          0000   0000  0010  1001(正數補0)
-41
絕對值相同的正負數的原碼(除符號位)相同
(正數的原碼 補碼 反碼相同)
負數的反碼等於原碼取反
負數的補碼等於原碼取反再加1
                                   10  1001
                         取反   01  0110(反碼)
                                   01  0111  
             1111 1111 1101  0111 (負數補1)

2.&運算
全為1 才為1
0&1 0
0&0 0
1&1 1

-16 & -12
-16:
 1111 1111 1111  1111   1111  1111   1111  0000
 1111 1111 1111 11111  1111   1111  1111  0100
 1111 1111 1111 11111  1111   1111  1111  0000 -16
3.|運算
有一個為1為1
0|1 1
0|0 0
1|1 1
-9 | -12
1111 1111 1111 1111 1111 1111 1111 0111
1111 1111 1111 1111 1111 1111 1111 0100
1111 1111 1111 1111 1111 1111 1111 0111 -9
4.~按位取反
0變1,1變0
5.^異或
相同為0 不同為1
1^1 0
1^0 1
0^0 0

8^12
0000 0000 0000 0000 0000 0000 0000 1000
0000 0000 0000 0000 0000 0000 0000 1100
0000 0000 0000 0000 0000 0000 0000 0100
 
6.>>移位運算
>>右移 左移<<
8>>3:
0000 0000 0000 0000 0000 0000 0000 1000
0000 0000 0000 0000 0000 0000 0000 0001

-37>>4
 1111 1111 1111  1111   1111  1111 1101 1011
 1111 1111 1111 1111  1111   1111  1111 1101 -3

12<<2
  0000 0000 0000 0000 0000 0000 0000 1100
  0000 0000 0000 0000 0000 0000 0011 0000 48

-4<<3
100
011
1111 1111 1111 1111 1111 1111 1111 1100
1111 1111 1111 1111 1111 1111 1110 0000 -32
無符號移位(高位補0)
15>>>3
0000 0000 0000 0000 0000 0000 0000 1111
0000 0000 0000 0000 0000 0000 0000 0001
-12>>>2
1100
0011
1111 1111 1111 1111 1111 1111 1111 0100
0011 1111 1111 1111 1111 1111 1111 1101


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM