判断二进制数据的第n位是否为1可以用&运算来判断
先来看下面的运算
十进制 | 二进制 | 位左移 |
---|---|---|
21=2 | 10 | 1<<1 |
22=4 | 100 | 1<<2 |
23=8 | 1000 | 1<<3 |
24=16 | 10000 | 1<<4 |
很难看不出其中一个规律,十进制d的第n为1,其余位为0的十进制计算公式为:d = 1 << (n -1)
比如16为第5位为1,十进制数为 1 << 4
有了上面的基础,我们如果想计算某个十进制的第n位是否为1时,可以进行位与运算;
位与运算:两位都是1时结果为1,否则为0
比如判断10的第3位是否为1,就可以换算成10 & 8
1 0 1 0
1 0 0 0
——————
1 0 0 0
结果为8大于0 表示10的第三位为1
2的第3位是否为1
0 0 1 0
0 1 0 0
——————
0 0 0 0
结果为0 表示2的第三位不是1
/**
* 判断十进制数某位是否为1
* @param number 需要计算的值
* @param index 位数
* @return
*/
private boolean isBitZero(int number, int index) {
return (number & (1 << (index - 1))) > 0;
}
标签:10,判断,运算,二进制,是否,number,十进制
From: https://www.cnblogs.com/LiuFqiang/p/16799645.html