2012-01-01 56 views

回答

15

Firstoff,0b前缀不是C但C. 的GCC扩展为了得到一个uint8_t a的位3的值,可以使用以下表达式:

((a >> 3) & 0x01) 

这将被评估,以1如果第3位被设置,并且如果第3位未被设置则为0。

+0

只是帮助那些可能不太熟悉二进制的人,第3位实际上是右边的第四位数字,即1 ** 1 ** 110如果您想从右边获得第三位数字,您可以右移2位,第五,第四等 – Manitobahhh 2018-03-01 00:27:46

5

首先C 0b01...没有二进制常量,请尝试使用十六进制常量。第二:

uint8_t byte; 
printf("%d\n", byte & (1 << 2); 
+4

第三;一次错误。 – 2012-01-01 22:20:31

+0

@refp良好的通话。 – cnicutar 2012-01-01 22:21:40

1

使用&操作来掩盖你想要的位,然后使用>>你喜欢移动。