Change language

[Bits and Bytes]

### 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
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--) {