java:判斷二進制數據中第n位是否為1


可以使用位運算來判斷。

&是位的與運算符,是指二進制數按位“與”的操作, 邏輯與就是兩者都為真的時候才為真,其他真假,假真,假假的運算結果都是假。二進制寫法如下
1 & 1 = 1   1 & 0 = 0  0 & 1 = 0 0 & 0 = 0

如果想判斷十進制數 d 的二進制第n位是否是1,應該用以下的數m來進行&運算

m = 1 << n-1 (n是大於0的整數)  

以上公式
n=1的時候m=1
n=2的時候m=2
n=3的時候m=4
n=4的時候m=8
...

如果同時mask多個位,只需要將m相加即可。
例如第2位和第3位, 將m2+m3 = 2 + 4 = 6


例:獲取10的二進制表示中的第2位是否為1:

m= 1 << (2-1) = 2;

10 & 2 二進制是 
1010 
0010 &
————————
0010
結果不是0, 所以說明第二位是1. 



根據boolean設置二進制第n位的值:

[java] view plain copy
  1. private void setFlag(int mask, boolean b) {  
  2.       if (b) {  
  3.           flags |= mask;  
  4.       } else {  
  5.           flags &= ~mask;  
  6.       }  
  7.   }  

 


拓展學習鏈接:

位運算

位運算應用技巧

Java位操作方法,位運算實際應用(簡單總結)


免責聲明!

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



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