A változók bit szintjén végzik el a számítást. Arduinoban az integer 16 bites.
Bináris / kettes számrendszer: http://hu.wikipedia.org/wiki/Kettes_sz%C3%A1mrendszer
& (bitenkénti és)
Ha mindkét bemeneti bit értéke 1 akkor a kapott kimeneti eredmény 1 bit. Ha az egyik vagy minkettő bemeneti bit 0 akkor a kapott kimeneti eredmény 0.
A
|
B
|
A&B
|
0
|
0
|
0
|
1
|
0
|
0
|
0
|
1
|
0
|
1
|
1
|
1
|
Arduino példa:
int a = 92; // binárisan: 0000000001011100
int b = 101; // binárisan: 0000000001100101
int c = a & b; // eredmény: 0000000001000100,
// vagy 68 a tizes számrendszerben.
| (bitenkénti megnegedő vagy)
Ha legalább az egyik bit 1 akkor az eredmény is 1. Ha mindkettő beneti bit 0 akkor a kimeneti bit 0.
A
|
B
|
A|B
|
0
|
0
|
0
|
1
|
0
|
1
|
0
|
1
|
1
|
1
|
1
|
1
|
int a = 92; // binárisan: 0000000001011100 int b = 101; // binárisan: 0000000001100101 int c = a | b; // eredmény: 0000000001111101,
// vagy 125 a tizes számrendszerben
^ (bitenkénti kizáró vagy)
Hasonloan működik mint a bitenkénti megengedő vagy operátor, azzal a különbséggel, hogy ha mindkét bemeneti bit 1 akkor a kapott eredmény 0.
A
|
B
|
A^B
|
0
|
0
|
0
|
1
|
0
|
1
|
0
|
1
|
1
|
1
|
1
|
0
|
int x = 12; // binárisan: 1100 int y = 10; // binárisan: 1010 int z = x ^ y; // eredmény: 0110,
// vagy 6 a tizes számrendszerben
~ (bitenkénti negálás)
Egy bitre alkalmazzuk. Ellenkező értéket vesz fel: 0-ból 1, 1-ből 0 lesz.
A
|
~A
|
0
|
1
|
1
|
0
|
Arduino példa:
int a = 103; // binárisan: 0000000001100111 int b = ~a; // eredmény: 1111111110011000 = -104
// tehát -x-1
<< (bitenkénti eltolás balra)
A szám bitjeit tolja el balra a megadott értékkel.
1111111111111000 | ||
<< | 2 | |
1111111111100000 |
Arduino szintaxis:
változó << bitek száma
>> (bitenkénti eltolás jobbra)
A szám bitjeit tolja el jobbra a megadott értékkel.
0000000000001000 | ||
>> | 2 | |
0000000000000010 |
Arduino szintaxis:
változó >> bitek száma
int a = 5; // bináris: 0000000000000101 int b = a << 3; // bináris: 0000000000101000,
// vagy 40 tizes számrendszerben int c = b >> 3; // bináris: 0000000000000101,
// vagy 5-tel vissza, a kezdőértékhez jutunk
forrás: http://arduino.cc/en/Reference/BitwiseAnd, http://www.arduino.cc/playground/Code/BitMath,
http://arduino.cc/en/Reference/BitwiseXorNot, http://arduino.cc/en/Reference/Bitshift,