定点数据类型
在数字硬件中,数字以二进制字形式存储。二进制字是固定长度的位(1 和 0)序列。硬件组件或软件函数如何解释这个由 1 和 0 组成的序列是由数据类型定义的。二进制数字以定点或浮点数据类型的形式来表示。
定点数据类型具有以下特征:以位为单位的字长、二进制小数点的位置,以及是有符号还是无符号。二进制小数点的位置用来定标和解释定点值。
例如,广义定点数(有符号或无符号)的二进制表示如下所示:
其中
bi 是第 i 个二进制数字。
wl 是以位为单位的字长。
bwl-1 是最高有效位或最高位 (msb) 的位置。
b0 是最低有效位或最低位 (lsb) 的位置。
二进制小数点显示在 lsb 左侧的四个位置处。在此示例中,该数字称为有四个小数位,或者小数长度为 4。
定点数据类型可以是有符号的也可以是无符号的。定点值是有符号还是无符号通常不会在二进制字中显式编码;也就是说,没有符号位。但是,符号信息在计算机架构中是隐式定义的。
有符号二进制定点数在计算机硬件中通常以三种方式之一表示:
原码 - 二进制字中有一位是专用符号位,其余位用来对数字的量级进行编码。使用原码表示的求反包括将符号位从 0(正)翻转为 1(负),或从 1 翻转为 0。
1 的补码 - 对 1 的补码中的二进制数求反需要按位补码。也就是说,所有 0 都翻转为 1,所有 1 都翻转为 0。在 1 的补码记数法中,零有两种表示方式。所有位均为 0 的二进制字表示“正”零,而所有位均为 1 的二进制字表示“负”零。
2 的补码 - 使用有符号 2 的补码求反时,先对位取反(转换为 1 的补码),然后使用二元加法加 1。例如,000101 的 2 的补码是 111011。
2 的补码是有符号定点数的最常用表示,也是 fixed-point designer™ 文档使用的唯一表示。