Ros*_*ers 9 math floating-point
什么是规范有符号数字(CSD)以及如何将二进制数转换为CSD并将CSD转换回二进制数?你怎么知道,如果一个CSD的数字应该规范地选择为+
,-
或0
?
有符号位二进制在每个2的幂位置使用三个符号:-1,0,1.表示的值是位置系数乘以相应功率2的总和,就像二进制一样,不同之处在于系数可以是-1.数字在此系统中可以有多个不同的表示.
规范的带符号数字表示是相同的,但受限于没有两个连续数字是非0的约束.可以看出,每个数字在CSD中都有唯一的表示形式.
请参阅Parhi的位级算术中的幻灯片31以获取更多信息,包括二进制到CSD转换算法.
规范有符号数字 (CSD) 是一种数字表示形式。CSD 演示文稿的重要特征是:
首先,找到数字的二进制表示。
示例 1 以数字 287 为例,其二进制表示形式为 1 0001 1111。(256 + 16 + 8 + 4 + 2 + 1 = 287)
1 0001 1111
Run Code Online (Sandbox Code Playgroud)
从右侧 (LSB) 开始,如果您在一行中发现多个非零元素(1 或 -1),则取所有这些元素,再加上下一个零。(如果 MSB 左侧没有零,则在那里创建一个)。我们看到这个数字的第一部分是
01 1111
Run Code Online (Sandbox Code Playgroud)
给数字加1(即把0 改为1,所有的1 都改为0),并强制最右边的数字为-1。
01 1111 -> 10 000-1
Run Code Online (Sandbox Code Playgroud)
您可以检查数字是否仍然相同:16 + 8 + 4 + 2 + 1 = 31 = 32 + (-1)。现在这个数字看起来像这样
1 0010 000-1
Run Code Online (Sandbox Code Playgroud)
由于没有更多连续的非零数字,转换完成。因此,数字 287 的 CSD 表示为 1 0010 000-1,即 256 + 31 - 1。
示例 2
来一个更具挑战性的例子怎么样。数字 345。在二进制中,它是
1 0101 1001
Run Code Online (Sandbox Code Playgroud)
找到第一个位置(从右开始),其中连续有多个非零数字。也取下一个零。加一,并强制最右边的数字为-1。
1 0110 -1001
Run Code Online (Sandbox Code Playgroud)
现在我们刚刚创建了另一对,必须对其进行转换。取011
, 并将其加一 (get 100
),并强制最后一位数字为 -1。(得到10-1
)。现在这个数字看起来像这样
1 10-10 -1001
Run Code Online (Sandbox Code Playgroud)
再做同样的事情。这一次,您将不得不想象 MSB 左侧有一个零。
10 -10-10 -1001
Run Code Online (Sandbox Code Playgroud)
您可以通过观察以下几点来确保这是正确的 CSD 演示: 1) 没有连续的非零数字。2) 总和加上 325 (512 - 128 - 32 - 8 + 1 = 345)。
该算法的更正式定义可以在 [ 2 ] 中找到。
CSD 也可能用于其他一些应用,但这是数字微电子的观点。它常用于数字乘法。[ 1 , 2 ]。数字乘法包括两个阶段:计算部分乘积和总结部分乘积。让我们考虑的乘法1010
和1011
:
1010
x 1011
Run Code Online (Sandbox Code Playgroud)
1010
1010
0000
+ 1010
Run Code Online (Sandbox Code Playgroud)
= 1101110
Run Code Online (Sandbox Code Playgroud)
正如我们所看到的,1010
必须相加的非零部分积('s)的数量取决于乘数中非零数字的数量。因此,部分乘积之和的计算时间取决于乘法器中非零位数的数量。因此,使用 CSD 转换数字的数字乘法比使用传统数字数字要快。CSD 形式包含的非零数字比二进制表示(平均)少 33%。例如,使用 CSD 表示时,传统的双精度浮点乘法可能需要 100.2 ns,但仅需要 93.2 ns。[ 1 ]
那么负面的呢。微电路中实际上是否存在三种状态(电压电平)?不,用负号计算的部分乘积不会立即相加。相反,您将这些数字的2 的补码(即负数表示)添加到最终总和中。
资料来源:
[ 1 ] D. Harini Sharma, Addanki Purna Ramesh:使用规范有符号数字的浮点乘法器
[ 2 ] Gustavo A. Ruiz,Mercedes Grand:高效的规范签名数字重新编码