我想将一个 int 作为输入,并返回第 k 位。
int getBit(int n, int k){
return kth bit in n;
}
我该怎么做?
使用位运算符:
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
return (n >> k) & 1;
在这里,n >> k
将k
第 - 位移动到最低有效位置,并& 1
屏蔽其他所有内容。
如果最低有效位是位数0
:
return (n>>k)&1;
或使用:
boolean getBit(int n, int k) {
return ((n >> k) & 1) == 1;
}
如果你想要一个布尔值
您也可以为此使用模块属性。如果您的数字是偶数,最低有效位为零,否则(奇数)为一。
return (n>>k)%2;