вот кусок разбираемого кода
if(crc & 0x8000) crc = (crc << 1) ^ 0x1021; else
Что означает if(crc & 0x8000). Как я понял это присваивание с побитовым "И", меня интересует когда будет выполняться then и else.
Для ясности скажу, что данный код - это подсчет контрольной суммы в приборах СПТ961
вот полный код функции:
int CRCode(char *msg, int len) { int j, crc = 0; while ( len-- > 0 ) { crc = crc ^ (int)*msg++ << 8; for ( j=0; j < 8; j++ ) { if(crc & 0x8000) crc = (crc << 1) ^ 0x1021; else crc <<= 1; } } return crc; }
№ 1 | Автор: monia |
2013-06-20, 10:17 | Изменено: monia - Чт, 2013-06-20, 10:20
|
Репутация: [ + 0 ]
|
|
|