Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Podivné chování programu pro Arduino

Zdar, může mi někdo fundovanej vysvětlit co dělám špatně? Uvedu část programu:

//tady je nějaká předchozí část programu

byte bajt1;
byte bajt2;

//tady se v programu načtou hodnoty bajt1 a bajt2

bajt1 = (bajt1 & 0b10000000) >> 7 | (bajt2 << 1);

//pokračuje program

tohle nefunguje a v bajt1 je vždy jen bajt2 posunutý o jedno místo doleva.

//tady je nějaká předchozí část programu

byte bajt1;
byte bajt2;

//tady se v programu načtou hodnoty bajt1 a bajt2

bajt1 = (bajt1 & 0x80) >> 7 | (bajt2 << 1);

//pokračuje program

tohle funguje a v bajt1 je správně jeho poslední bit plus bajt2 posunutý o jedno místo doleva.

je něco shnilého v AVR GCC nebo je chyba někde jinde?

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Tak už to vím: Unfortunately, most C++ compilers do not have any means of expressing binary numbers… poslední
mia 05.06.2015 10:52
mia

Tak už to vím:

Unfortunately, most C++ compilers do not have any means of expressing binary numbers directly in source code. A few allow the prefix 0b followed by a series of 0 and 1 digits, e.g. 0b11 == 3. The C++ compiler used by Arduino does not support this syntax. However, starting in Arduino 0007, the constants B0 through B11111111 are defined for your convenience.

takže kompilátor ten tvar neumí. Je zajímavé, že při překladu nehlásí chybu.

Zpět do poradny Odpovědět na původní otázku Nahoru