可能重复:
how to get bit by bit data from a integer value in c?c - 从中字节得到位
我有一个8位字节,我想从这个字节变得有点像 了getByte (0b01001100,3)= 1
可能重复:
how to get bit by bit data from a integer value in c?c - 从中字节得到位
我有一个8位字节,我想从这个字节变得有点像 了getByte (0b01001100,3)= 1
Firstoff,0b
前缀不是C但C. 的GCC扩展为了得到一个uint8_t a
的位3的值,可以使用以下表达式:
((a >> 3) & 0x01)
这将被评估,以1如果第3位被设置,并且如果第3位未被设置则为0。
只是帮助那些可能不太熟悉二进制的人,第3位实际上是右边的第四位数字,即1 ** 1 ** 110如果您想从右边获得第三位数字,您可以右移2位,第五,第四等 – Manitobahhh 2018-03-01 00:27:46
首先C 0b01...
没有二进制常量,请尝试使用十六进制常量。第二:
uint8_t byte;
printf("%d\n", byte & (1 << 2);
第三;一次错误。 – 2012-01-01 22:20:31
@refp良好的通话。 – cnicutar 2012-01-01 22:21:40
使用&操作来掩盖你想要的位,然后使用>>你喜欢移动。
Arrgh,这么多重复!让我找到一个... – 2012-01-01 22:19:17