Перейти к содержанию
    

steel.ne

Новичок
  • Постов

    1
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Посетители профиля

964 просмотра профиля
  • dvf

  1. Некропост, конечно, но вдруг кому понадобится: Раз используется одна и та же маска, только со сдвигом, то надо ее также обратно сдвигать. Правильно отметили, что это деление полиномов. Как происходит деление? полином 011000101000 = 0x628 00001100100110011001 = 0х0C9999 011000101000 - не делится => 0 ------------------- 0000110010011 011000101000 - не делится => 0 ------------------ 00001100100110 011000101000 - не делится => 0 ------------------ 000011001001100 011000101000 - опа, делится => 1, делаем xor ----------------- 0000000011001001 <- добавляем следующий бит из исходного числа 011000101000 - не делится => 0 00000000110010011 011000101000 - не делится => 0 000000001100100110 011000101000 - не делится => 0 0000000011001001100 011000101000 - опа, делится => 1, делаем xor ----------------- 00000000000011001001 011000101000 - не делится => 0 ----------------- 00000000000011001001 0 <- исходное число кончилось, добавляем нули 01100010100 0 - не делится => 0 ----------------- 00000000000011001001 00 0110001010 00 - не делится => 0 ----------------- 00000000000011001001 000 011000101 000 - опа, делится => 1, делаем xor ----------------- 00000000000000001100 0000 01100010 0000 - не делится => 0 ----------------- 00000000000000001100 00000 0110001 00000 - не делится => 0 ----------------- 00000000000000001100 000000 011000 000000 - не делится => 0 ----------------- 00000000000000001100 0000000 01100 0000000 - делится => 1 ----------------- 0 еще 4 разряда будут нули [[ записываем результат сверху вниз - 00010001000100010000 = 0х111110 последняя единица потерялась, потому что маска, ссответствующая этому биту - 0, и не влияет на результат
×
×
  • Создать...