1. 程式人生 > >java:判斷二進位制資料中第n位是否為1

java:判斷二進位制資料中第n位是否為1

可以使用位運算來判斷。

&是位的與運算子,是指二進位制數按位“與”的操作, 邏輯與就是兩者都為真的時候才為真,其他真假,假真,假假的運算結果都是假。二進位制寫法如下
1&1=11&0=00&1=00&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;
        }
    }

拓展學習連結:

位運算