2012-01-01 57 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

使用&操作來掩蓋你想要的位,然後使用>>你喜歡移動。