Operazioni sui bit.
// ====== OPERAZIONI BITS ======
// Leggi di più qui.
/*
& - Operazione a bit AND
| - Operazione a bit OR
^ - Operazione a bit XOR
~ - Operazione a bit NON
<< - spostamento del bit a sinistra
>> - spostamento del bit a destra
*/
bit(val); // restituisce 2 elevato alla potenza di val (0 sarebbe 1, 1 sarebbe 2, 2 sarebbe 4, 3 sarebbe 8, ecc.)
bitClear(x, n); // imposta a 0 il bit che si trova nel numero x al numero n
bitSet(x, n); // imposta a 1 il bit che si trova nel numero x al numero n
bitWrite(x, n, b); // imposta il valore di b (0 o 1) su bit , che è nel numero x al numero n.
bitRead(x, n); // restituisce il valore del bit (0 o 1) che si trova nel numero x al numero n.
highByte(x); // recupera e restituisce il byte alto (più a sinistra) della variabile di tipo word (o il secondo byte basso della variabile se il suo tipo richiede più di due byte).
lowByte(x); // recupera e restituisce il byte meno significativo (più a destra) di una variabile (ad esempio, di tipo word).
// ====== Operazione a bit AND
======
/*
0 & 0 == 0
0 & 1 == 0
1 & 0 == 0
1 & 1 == 1
*/
myByte = 0b11001100;
myBits = myByte & 0b10000111;
// myBits ora è 0b10000100
// ====== Operazione a bit OR
======
/*
0 | 0 == 0
0 | 1 == 1
1 | 0 == 1
1 | 1 == 1
*/
myByte = 0b11001100;
myBits = myByte | 0b00000001;
// myBits ora è
0b11001101
// ====== Operazione a bit XOR
======
/*
0 ^ 0 == 0
0 ^ 1 == 1
1 ^ 0 == 1
1 ^ 1 == 0
*/
myByte = 0b11001100;
myByte ^= 0b10000000;
// myByte ora è
01001100
// ====== Operazione a bit NON
======
/*
~0 == 1
~1 == 0
*/
myByte = 0b11001100;
myByte = ~myByte; // invertire
// myByte ora è
00110011
// ====== Spostamento del bit ======
myByte = 0b00011100;
myByte = myByte << 3; // sposta 3 a sinistra
// myByte ora è
0b11100000
myByte >>= 5;
// myByte ora è
0b00000111
myByte >>= 2;
/*
myByte ora è
0b00000001
il resto dei bit è perso.
*/