Страницы

Поиск по вопросам

четверг, 28 февраля 2019 г.

Двоичный циклический сдвиг

Здравствуйте, друзья. Подскажите, пожалуйста, оптимальный способ реализации двоичного циклического сдвига (вращения) 32-разрядного значения влево на 11 разрядов на языке МК-61.


Ответ

Встроенные битовые операции тут не помогут, т.к. нет даже нециклического сдвига. Поэтому делаем в десятичной системе: в одном из регистров старшие 16 бит, в другом - младшие. Из старших 16 бит отделяем левые 11 бит (делением нацело на 2 в 5 степени), запоминаем. Остальные 5 бит тоже отделяем (для этого надо как-то остаток от прошлого деления получить), умножаем на 2 в 11 степени. Из младших 16 бит точно так же выделяем старшие 11 бит, прибавляем их к старшему байту. Остаток опять же умножаем на 2 в 11 степени, прибавляем те 11 бит, которые сохранили в самом начале.

Комментариев нет:

Отправить комментарий