Почти все микропроцессоры и цифровые сигнальные процессоры поддерживают четко определенный сдвиг разряда (или просто переключают), операции для целых чисел. Например, рассмотрите 8-битное беззнаковое целое 00110101. Результаты 2-битного сдвига налево и 2-битного сдвига направо показывают в следующей таблице.
Операция сдвига | Двоичное значение | Десятичное значение |
---|---|---|
Никакой сдвиг (исходный номер) | 00110101 | 53 |
Сдвиг оставлен на 2 бита | 11010100 | 212 |
Сдвиг прямо на 2 бита | 00001101 | 13 |
Можно выполнить сдвиг с помощью блока Simulink® Shift Arithmetic. Используйте этот блок, чтобы выполнить немного сдвига, сдвиг двоичной точки или обоих
Особый случай сдвига битов направо требует фактора обработки крайнего левого бита, который может содержать информацию о знаке. Сдвиг направо может быть классифицирован или как право логического сдвига или как право арифметического сдвига. Для права логического сдвига 0 включен в старший значащий бит для каждого сдвига разряда. Для права арифметического сдвига старший значащий бит переработан для каждого сдвига разряда.
Блок Shift Arithmetic выполняет право арифметического сдвига и, поэтому, перерабатывает старший значащий бит для каждого права сдвига разряда. Например, учитывая фиксированную точку номер 11001.011 (-6.625), немного сдвига два места направо с двоичной точкой неперемещенные выражения номер 11110.010 (-1.75), как показано в модели ниже:
Чтобы выполнить логический сдвиг прямо на числе со знаком с помощью блока Shift Arithmetic, используйте блок Data Type Conversion, чтобы снять номер в качестве количества без знака эквивалентной длины и масштабирования, как показано в следующей модели. Модель показывает, что фиксированная точка число со знаком 11001.001 (-6.625) становится 00110.010 (6.25).