Java的位運算符——&0xFF的運算與講解


 

快放元旦假,沒心思做啥的事,就去翻以前的代碼遇到這句,但是又不懂,所以只好上網找,終於懂了那么一點點。

所以那個大神看到我說的有問題,請指出!謝謝。。。。

 一:首先區分一下 A~F的意思先

A,代表十進制的10,二進制的1010。
B,代表十進制的11,二進制的1011。
C,代表十進制的12,二進制的1100。
D,代表十進制的13,二進制的1101。
E,代表十進制的14,二進制的1110。
F,代表十進制的15,二進制的1111。
e
二:區分
&,丨,^的運算規則
& (按位與運算符)表示:
兩個操作數中位都為1,結果為1
如果兩個操作中位一個1另一個0 ,結果為0
即運算規則:0&0=0; 0&1=0; 1&0=0; 1&1=1;
例如:1010 & 1110= 1010

|(按位或運算符)表示:
兩個操作中位只有一個為1,結果就等與1
即運算規則:0|0=0; 0|1=1; 1|0=1; 1|1=1

例如: 1010 | 1111 =1111

^(異或 運算符)表示
兩個中位如果相同的數值,結果為 0,
如果兩個中位 數值不同,結果為1.
即運行結果:同數值: 0^0=0;1^1=0;
不同數值: 0^1=1; 1^0=1;

例如:1010 ^ 1110 = 0100

 ~(取反運算符)表示:(這個我不太懂)
參加運算的一個數據,按二進制位進行“取反”運算。
即:對一個二進制數按位取反,即將0變1,1變0
運算規則:~1=0; ~0=1;

例如:使一個數的最低位為零,可以表示為:a&~1
~1的值為1111111111111110

  

 3:0x31 (一般看到0x==》16進制數)

       0x31計算: 先把0x31轉換為 10進制的數  0x31(10)=16*3+1=49

         再把得到10進制轉 2進制    49(2)=110001

  所以 0xFF 也是這樣計算的  F==>表示15進制

        0xFF(10)= 16*15+15=255

         255 (2) = 11111111

   0x31  &  0xFF 的 計算 

   因為0xFF得出的結果 8個字節,而位數要相同,那么 0x31就要補0,因為在0x31的二進制為110001已經又6個字節了,那么再前面加兩個0即可(這句其實我覺得我說的有點怪怪的)

  a): 0x31 &  0xFF

 = 00110001 &  11111111

 =00110001          

 =110001

 b):  0x31  |  0xFF 

  = 00110001  |  11111111

  =11111111 

 


免責聲明!

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



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