Сдвиги

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

Чтобы выполнить логический сдвиг прямо по номеру со знаком с помощью арифметики, используйте блок Data Type Conversion, чтобы привести число как беззнаковое число эквивалентной длины и масштабирования, как показано на следующей модели. Модель показывает, что номер со знаком с фиксированной точкой 11001.001 (-6.625) становится 00110.010 (6.25).