Сдвиги

Почти все микропроцессоры и цифровые сигнальные процессоры поддерживают четко определенный сдвиг разряда (или просто переключают), операции для целых чисел. Например, рассмотрите 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).