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