0

我最近正在用java做一个项目,我想处理一个整数的位,以便我可以检查一个数字的i lsb。我找到了很多方法,但没有什么可以正确处理......

例子

key=二进制中的4 密钥4100 我想以某种方式提取其中的第 3 个4LSB 1。有没有一种算法可以做到这一点?

4

3 回答 3

4

使用位移位和按位与:(从 0 开始索引)

int getBit(int number, int index)
{
  return (number >> index) & 1;
}

getBit(4, 2)返回 1。

您也可以使用% 2代替& 1.

于 2013-05-28T16:10:04.930 回答
2

制作位掩码并移位:

int bitmask = 4;

int extractedBit = (i & BIT3) >> 2; // is now the 3rd lsb.
于 2013-05-28T16:09:12.737 回答
1

好吧,试试这个。由于第 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;
于 2013-05-28T16:23:21.680 回答