Строка
bit = (dec & 0x8000) != 0 ;
эквивалентна:
if ( (dec & 0x8000) != 0 ) bit = 1;
else bit = 0;
, но это однострочная для оператора if-else
&
- это побитовый оператор и , который сравнивает двоичную запись из dec
и 0x8000
и возвращает 1 , где есть оба в dec
и 0x8000
маленький пример: 11&5
возвращает 1
, потому что 11 = 0b1011
и 5 = 0b101
и сравнивая (справа налево) мы имеем только последние 1
в обоих числах ...
0x8000
является шестнадцатеричным для 32768
надеюсь, это поможет