5785 shaares
postoji gotova funkcija "bitRead()" u arduinu (wiring.h); također postoje gotove funkcije i za ostale operacije:
#define bitRead(value, bit) (((value) >> (bit)) & 0x01)
#define bitSet(value, bit) ((value) |= (1UL << (bit)))
#define bitClear(value, bit) ((value) &= ~(1UL << (bit)))
#define bitWrite(value, bit, bitvalue) (bitvalue ? bitSet(value, bit) : bitClear(value, bit))
... ručno dvije strategije
(jako je bitno u implementaciji sve stvari odvojiti zagradama)
----------- A -------------
- shiftanje 1 za X pozicija u lijevo
- AND-anje toga sa byteom
11010110
00000100 (1 << 2)
00000100 &
00000100 ... NOT zero, so the bit is set
((theByte & (1 << position)) != 0);
----------- B -------------
- shiftanje bytea u desno za X pozicija
- AND-anje toga s 1
11010110
00110101 (>> 2)
00000001 &
00000001 ... bit is set
(((theByte >> position) & 1) == 1);