移位
几乎所有微处理器和数字信号处理器都支持明确定义的整数移位(或称为移位)运算。例如,假设有 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)。
