java:判斷二進位制資料中第n位是否為1
阿新 • • 發佈:2018-12-26
可以使用位運算來判斷。
&
是位的與運算子,是指二進位制數按位“與”的操作,
邏輯與就是兩者都為真的時候才為真,其他真假,假真,假假的運算結果都是假。二進位制寫法如下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位的值:
private void setFlag(int mask, boolean b) {
if (b) {
flags |= mask;
} else {
flags &= ~mask;
}
}
拓展學習連結: