Description
Reads a bit of a variable, e.g. bool
, int
. Note that float
& double
are not supported. You can read the bit of variables up to an unsigned long long
(64 bits / 8 bytes).
Syntax
bitRead(x, n)
Parameters
x
: the number from which to read.
n
: which bit to read, starting at 0 for the least-significant (rightmost) bit.
Returns
The value of the bit (0 or 1).
Example Code
This example code demonstrates how to read two variables, one increasing counter, one decreasing counter, and print out both the binary and decimal values of the variables.
The readBit()
function loops through each bit of the variable (starting from the rightmost bit), and prints it out.
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);
}