bitRead()

Last revision:2025/04/26

名称

bitRead()

説明

変数(例えばboolint)から、あるビットを読み取る。floatdoubleはサポートされていない。unsigned long long(64ビット/8バイト)の変数までビットを読み取ることができる。

書式

変数xn番目のビットの状態を読み取るには、以下の関数を使う。

bitRead(x, n)

引数

この関数は以下の引数を受け付ける。

x
ビットを読み取る数値。
n読み取りたいビット。0から始まる。最下位ビット(一番右側)が0。

戻り値

この関数は、ビット(0か1)の値を返す。

コード例

このコード例は、二つの変数を読み取る方法を示している。一つは増分カウンターで、もう一つは減分カウンターである。双方の変数の値を2進数と10進数で表示する。

readBit()関数は変数の全てのビットをループ(もっとも右のビットから開始)し、表示する。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
long negative_var = -0;  //
unsigned long long positive_var = 0;

//predefined sizes when looping through bits
//e.g. long_size is 32 bit (which is 0-31). Therefore, we subtract "1".
const int bool_size = (1 - 1);
const int int_size = (8 - 1);
const int long_size = (32 - 1);

void setup() {
  Serial.begin(9600);
}

void loop() {
  //run readBit function, passing the pos/neg variables
  readBit("Positive ", positive_var);
  readBit("Negative ", negative_var);
  Serial.println();

  //increase and decrease the variables
  negative_var--;
  positive_var++;

  delay(1000);
}

/*this function takes a variable, prints it out bit by bit (starting from the right)
then prints the decimal number for comparison.*/
void readBit(String direction, long counter) {
  Serial.print(direction + "Binary Number: ");
  //loop through each bit
  for (int b = long_size; b >= 0; b--) {
    byte bit = bitRead(counter, b);
    Serial.print(bit);
  }
  Serial.print(" Decimal Number: ");
  Serial.println(counter);
}

参照

訳者註

bitRead()はマクロとして定義されている。

オリジナルのページ

https://docs.arduino.cc/language-reference/en/functions/bits-and-bytes/bitRead/

実装の解析

まだ解析していません。

最終更新日

August 16, 2026

inserted by FC2 system