如果我有小数12
,则其二进制表示为00001100
。我如何提取第五位,在这种情况下是1
?我想左移通过4
并AND
用-ing 1
但这并不正确。有人可以告诉我我在做什么错吗?
player = low << 4 & 1;
您实际上想要获取3d位(从右端开始):
00001100
^
3d from the right end (bits are zero based)
您要做的就是借助摆脱掉3
低位(100
),>>
然后检查下一位:
// 1 if 3d bit is set, 0 otherwise
player = (low >> 3) & 1;
或者,如果您5
在左端有数字-索引,并假设low
是byte
:
player = (low >> (sizeof(byte) * 8 - 5)) & 1;