温馨提示:本文翻译自stackoverflow.com,查看原文请点击:bit manipulation - how do I extract the 5th bit of a byte in c#
bit bit-manipulation byte c#

bit manipulation - 如何在C#中提取字节的第5位

发布于 2020-05-17 04:59:17

如果我有小数12,则其二进制表示为00001100我如何提取第五位,在这种情况下是1我想左移通过4AND用-ing 1但这并不正确有人可以告诉我我在做什么错吗?

player = low << 4 & 1;

查看更多

提问者
Julian
被浏览
9
Dmitry Bychenko 2020-02-28 16:25

您实际上想要获取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左端有数字-索引,并假设lowbyte

 player = (low >> (sizeof(byte) * 8 - 5)) & 1;