Engee 文档

移位算术

信号比特或二进制点的位移。

类型: ArithShift

图书馆中的路径:

/Basic/Logic and Bit Operations/Shift Arithmetic

说明

移位算术*块可以对输入信号的位或二进制点进行移位,也可以对两者都进行移位。

下表举例说明了如何将 "固定 "类型输入数据的二进制点向左右移动两位数。

移位操作 二进制值 十进制值

不移位(原始数据)

11001.011

-6.625

将二进制点向右移动两位数

1100101.1

-26.5

将二进制点向左移动两位数

110.01011

-1.65625

移位算术*程序块对有符号数进行位移算术运算。因此,程序块每次位移都会重复使用高位。 下表是输入 "固定 "类型数据时,向左右移动两位数的位移示例。

移位操作 二进制值 十进制值

未移位(原始数字)

11001.011

-6.625

位向右移动两位数

11110.010

-1.75

位左移两位数

00101.100

5.5

端口

输入

u - 转换后的数字
标量 | 向量 | 矩阵

要执行移位操作的数字,指定为标量、向量或矩阵。

数据类型: Float32, Float64, Int32, Int64, Fixed

s - 移位的位数
标量

要移动的位数,以标量形式指定。

依赖关系

要启用此端口,请将 Source 参数设置为 "输入端口"。

数据类型: Int32, Int64

输出

端口_1 - 结果
标量 | 向量 | 矩阵

以标量、向量或矩阵形式返回的操作结果。

数据类型: Float32, Float64, Int32, Int64, Fixed

参数

位移

- 要转换的位数的源
对话框(默认) | 输入端口

指定是在对话框中输入位移位数,还是从输入端口继承数值。

软件使用

块参数

BitShiftNumberSource

价值观

Dialog | Input port

默认值

Dialog

Direction - 位移方向
双向(默认)` | | `左

指定位移方向:左、右或双向。

软件使用

块参数

BitShiftDirection

价值观

Left | Right | Bidirectional

默认值

Bidirectional

Number - 移位的位数
8(默认) | scalar

设置位移的位数。

如果 Direction 参数设置为 "双向",正 Number 值表示向右移动,负值表示向左移动。

依赖关系

如果 Source 参数设置为 "对话框",则此参数可用。

软件使用

块参数

BitShiftNumber

价值观

标量

默认值

8

数据类型: Int32, Int64

主页

移动二进制点 - 移动二进制点的位数
0(默认) | scalar.

指定移动输入信号二进制点的整数位数。正数表示向右移动,负数表示向左移动。

软件使用

块参数

BinPtShiftNumber

价值观

标量

默认值

0

数据类型: Int32, Int64

诊断移位值超出范围 - 诊断操作
无(默认) | `错误

指定当程序块包含超出范围的移位值时,是否在仿真过程中输出错误。选项包括

  • None - 系统不采取任何措施。

  • 错误"- 系统完成仿真并显示错误。

软件使用

块参数

DiagnosticForOORShift

价值观

None | Error

默认值

None

更多信息

*屏蔽图标变量

移位算术*程序块图标*显示了使用这些变量的程序块行为:

Qy` 是存储的输出整数值。 Qu - 输入值的整数存储值。 Vy - 输出值。 Vu - 输入值。 Ey - 输出度值。 Eu - 输入度值。

*用于右位移的块输出。

示例显示了不同*源*参数值下右移位模拟结果的比较:对话框 "和 "输入端口"。

shift arithmetic 1

表中给出了上一级程序块 *移位算术*的参数设置。

参数

输入端口 u

124

*源

对话框

*方向

右侧

*数字

2

上层块 *移位算术*以 124 为输入,对应二进制格式的 01111100。将位数向右移动两位,得到二进制格式的 00011111。因此,程序块输出 31

下表给出了低位*移位算术*程序块的参数设置。

参数

输入端口 u

124

输入端口 s

2

*源

输入端口

*方向

移位算术*下位运算块执行与上位运算块相同的运算。如果位移值作为输入信号通过输入端口提供,则可在仿真过程中进行位移运算。

*用于二进制点移位的输出块。

下面的模型显示了二进制点移位的模拟情况。

shift arithmetic 2

表中给出了上一级程序块 *移位算术*的参数设置。

参数

输入端口 u

124.0

*源

对话框

*方向

双向

*数字

0

*二进制点移动

3

上一级程序块 *移位算术*的输入为`124.0`,对应二进制格式的`01111100`。将二进制点向右移动三个位置,得到二进制格式的 01111100000。因此,上一级程序块输出 995.0

下表给出了下*移位算术*程序块的参数设置。

参数

输入端口 u

124.0

*源

对话框

*方向

双向

*数字

0

*二进制点移动

-3

较低的*移位算术*块也将`124.0`作为输入。将二进制点向左移动三个位置,得到二进制格式的 01111.100。因此,下级程序块输出 15.5

算法

*位移超出范围

假设 WL 是输入机器字的长度。下图中的阴影区域显示了左移和右移的位移超出范围值。

shift arithmetic 3

同样,下图中的阴影区域显示了双向位移中超出可接受范围的位移值。

shift arithmetic 4

根据*超出范围的位移值诊断*,超出范围的位移诊断反应如下:

  • 无"- 系统不采取任何措施。

  • 错误"- 系统完成模拟并显示错误。

*超出范围的位移值的模拟和加速模式结果。

假设 U 为输入值,WL 为输入机器字的长度,Y 为输出值。左移时超出范围的位移值输出如下:

shift arithmetic 5

同样,右移时超出有效范围的位移值输出如下:

shift arithmetic 6

对于双向移位,位移值超出有效范围的输出如下:

shift arithmetic 7

附加选项

C 代码生成: 是