Новые сообщения · Правила  
  • Страница 1 из 1
  • 1
Модератор форума: Berestovskiy  
Помогите разобраться
вот кусок разбираемого кода

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 ]
  • Страница 1 из 1
  • 1
Поиск: