arduino中bitRead詳細用法


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) ,也就是從低位讀到高位的右邊開始的讀法。
————————————————
版權聲明:本文為CSDN博主「河西石頭」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/haigear/article/details/103318757


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM