我想把一个int作为输入,并返回第k位。
int getBit(int n, int k){
return kth bit in n;
}
我该怎么做?
答案 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 >> k
将k
位移到最不重要位置,& 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;