如何在Java中逐位读取整数?
我想将int作为输入,并返回第k位如何在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 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;