首页 > 解决方案 > 如何在c#中提取一个字节的第5位

问题描述

如果我有十进制12,它的二进制表示是00001100. 如何提取第五位,在这种情况下是1?我尝试左移和-ing但这4正确。有人可以告诉我我做错了什么吗?AND1

player = low << 4 & 1;

标签: c#bit-manipulationbytebit

解决方案


您实际上想要获得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;

推荐阅读