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

时间:2013-01-03 19:25:37

标签: java

我想把一个int作为输入,并返回第k位。

int getBit(int n, int k){
    return kth bit in n;
}

我该怎么做?

6 个答案:

答案 0 :(得分:69)

使用按位运算符:

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

解释(以位为单位):

n
100010101011101010 (example)
n >> 5
000001000101010111 (all bits are moved over 5 spots, therefore
&                   the bit you want is at the end)
000000000000000001 (0 means it will always be 0,
=                   1 means that it will keep the old value)
1

答案 1 :(得分:8)

return (n >> k) & 1;

此处,n >> kk位移到最不重要位置,& 1屏蔽其他所有位置。

答案 2 :(得分:4)

如果最低有效位是位号0

return (n>>k)&1;

答案 3 :(得分:0)

您也可以使用module属性。如果您的数字是偶数,则最低有效位为零,否则(奇数)为1。

return (n>>k)%2;

答案 4 :(得分:0)

或使用:

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

如果你想要一个布尔值

答案 5 :(得分:0)

您也可以使用模数2,因为最后一位为0的最奇数甚至是奇数

return (n >> k) % 2;