Java 有没有办法从int中获取i(i更改)lsb?

Java 有没有办法从int中获取i(i更改)lsb?,java,lsb,Java,Lsb,我最近在用java做一个项目,我想处理整数的位,这样我可以检查一个数字的I lsb。 我已经找到了很多方法,但没有一种方法可以正确处理 范例 键=4 二进制中的键4是100 我想以某种方式提取4的第3个LSB,即1。 有没有一种算法可以做到这一点 制作位掩码并移位: int bitmask = 4; int extractedBit = (i & BIT3) >> 2; // is now the 3rd lsb. 使用位移位和按位与:从0索引 int getBit(in

我最近在用java做一个项目,我想处理整数的位,这样我可以检查一个数字的I lsb。 我已经找到了很多方法,但没有一种方法可以正确处理

范例

键=4 二进制中的键4是100 我想以某种方式提取4的第3个LSB,即1。
有没有一种算法可以做到这一点

制作位掩码并移位:

int bitmask = 4;

int extractedBit = (i & BIT3) >> 2; // is now the 3rd lsb.

使用位移位和按位与:从0索引

int getBit(int number, int index)
{
  return (number >> index) & 1;
}
getBit4,2返回1


您也可以使用%2而不是&1。

好的,试试这个。由于第三个LSB将基于数字的单位位置值,无论其大小,如果其小于4或大于7,则该值将为0。因此,单位位置中的0,1,2,3U8,9表示第三个LSB为0。4,5,6,7给1


你知道二进制算术吗?用那个。还有,key的整数值是多少?@Hanut正值是指0到+inf的范围?@Hanut我认为这个范围在我的项目中没有太大问题…非常好而且优雅的方法!!!非常感谢你!也许那就是只给出第三个LSB的那个?不,我的意思是每次我都需要找到第I个LSB…我不需要只给出第三个LSB。谢谢,但是你从来没有告诉过我:D
int key = 12000;
int i=4;
if((key/(10^(i-1))%10 < 4 || (key/(10^(i-1))%10 >7)
    lsb3 = 0;
else
    lsb3 = 1;