bitRead在單片機中使用時比較頻繁的,尤其對於數碼管以及與數碼管類似的存在未操作的器件中使用較多。這裏我們詳細介紹一下它的使用方法。首先我們來看看在arduino的IDE的參考手冊中怎麼描述的:
Description
Reads a bit of a number.
bitRead用來從數當中讀取一個位。
我來翻譯一下,其實就是從一個給定的數中讀取某個指定的二進制位的值。
看下面的參數描述:
bitRead(x, n)
x: the number from which to read
n: which bit to read, starting at 0 for the least-significant (rightmost) bit
這裏的第一個參數,其實就是我們給定的那個數,我們用來讀取的那個目標;
第二個參數是我們要讀取的這個目標數轉化爲二進制後的指定位置,比如十進制的4轉化爲二進制後爲00000100,我們指定讀取右邊第三位,則n爲3;
Returns
the value of the bit (0 or 1)
返回值,這個不用多說,比如上面的n爲3,則讀到的是1,n爲4則讀到的爲0,讀到什麼返回什麼。
舉例子:
下面的程序就是將十進制數0到10的每個二進制位讀出,也就相當於將他們的二進制數顯示打印出來了
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
for(int k=0;k<11;k++)
{
for(int i=0;i<8;i++)
Serial.print(bitRead(k,i));
Serial.print('\n');
delay(100);
}
}
void loop() {
// put your main code here, to run repeatedly:
}
輸出的結果是:
同樣,讀取二進制數和十六進制也是可以了,如下
int num[10]={0b00000000,
0b10000000,
0b01000000,
0b11000000,
0b00100000,
0b10100000,
0b01100000,
0b11100000,
0b00010000,
0b10010000};
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
for(int k=0;k<11;k++)
{
for(int i=0;i<8;i++)
Serial.print(bitRead(num[k],i));
Serial.print('\n');
delay(100);
}
}
void loop() {
// put your main code here, to run repeatedly:
}
從上述代碼我們可以看出,bitRead是從右讀到左的,在一個程序中我們也注意到1的二進制是00000001,但輸出的時候是先輸出了1再輸出的其他的零,所以纔有輸出後的1000000。
這裏便是 在對第二個參數進行說明時描述的least-significant (rightmost) ,也就是從低位讀到高位的右邊開始的讀法。