如何在Java中逐位读取整数?

如何在Java中逐位读取整数?,java,Java,我想将int作为输入,并返回第k位 int getBit(int n, int k){ return kth bit in n; } 我该怎么做 return (n >> k) & 1; 在这里,n>>k将k-th位移到最低有效位置,并且&1屏蔽其他所有内容。使用位运算符: int getBit(int n, int k) { return (n >> k) & 1; } 说明(以位为单位): 如果最低有效位是位号0: return

我想将int作为输入,并返回第k位

int getBit(int n, int k){
    return kth bit in n;
}
我该怎么做

return (n >> k) & 1;

在这里,
n>>k
k
-th位移到最低有效位置,并且
&1
屏蔽其他所有内容。

使用位运算符:

int getBit(int n, int k) {
    return (n >> k) & 1;
}
说明(以位为单位):


如果最低有效位是位号
0

return (n>>k)&1;

您还可以为此使用模块属性。如果数字为偶数,则最低有效位为零,否则(奇数)为1

或使用:

boolean getBit(int n, int k) {
    return ((n >> k) & 1) == 1;
}

如果需要布尔值,也可以使用模2,因为最后一位为0的numberst是偶数,否则它是奇数

return (n >> k) % 2;

这是从最低有效位作为第0位开始的,对吗?@user1921187是的
getBit(0b10001,0)
将返回
1
getBit(0b10001,1)
将返回
0
。如果我运行getBit(n,0),我将从右边获得第二位。所以k=0实际上会得到最低有效位,所以它是第0位。我看到什么不对劲了吗?@user1921187对不起,我编辑了我的评论。我没有想到:P如果你运行
getBit(n,0)
,你会得到最后一位。正确答案。关于这一点的另一个想法是,左移1乘以k,然后检查。n&(1)这是2017年的情况。是的,确实如此。不需要添加另一个相同的答案。
boolean getBit(int n, int k) {
    return ((n >> k) & 1) == 1;
}
return (n >> k) % 2;