可以使用位運算來判斷。
&
是位的與運算符,是指二進制數按位“與”的操作, 邏輯與就是兩者都為真的時候才為真,其他真假,假真,假假的運算結果都是假。二進制寫法如下
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;
- }
- }
拓展學習鏈接: