我最近正在用java做一个项目,我想处理一个整数的位,以便我可以检查一个数字的i lsb。我找到了很多方法,但没有什么可以正确处理......
例子
key=二进制中的4
密钥4
是100
我想以某种方式提取其中的第 3 个4
LSB 1
。有没有一种算法可以做到这一点?
使用位移位和按位与:(从 0 开始索引)
int getBit(int number, int index)
{
return (number >> index) & 1;
}
getBit(4, 2)
返回 1。
您也可以使用% 2
代替& 1
.
制作位掩码并移位:
int bitmask = 4;
int extractedBit = (i & BIT3) >> 2; // is now the 3rd lsb.
好吧,试试这个。由于第 3 个 LSB 将基于数字的单位位置的值,无论它有多大,如果它小于 4 或大于 7,则该值将为 0。因此(0,1,2,3)U(8,9)
,在单位位置中,将第 3 个 LSB 设为0
. (4,5,6,7)
给1
.
int key = 12000;
int i=4;
if((key/(10^(i-1))%10 < 4 || (key/(10^(i-1))%10 >7)
lsb3 = 0;
else
lsb3 = 1;