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) ,也就是從低位讀到高位的右邊開始的讀法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章