什么是规范签名数字?

时间:2011-08-01 19:09:23

标签: math floating-point

什么是canonical signed digit(CSD)以及如何将二进制数转换为CSD并将CSD转换回二进制数?你怎么知道CSD的数字是否应该被规范地选为+-0

2 个答案:

答案 0 :(得分:7)

有符号位二进制在每个2的幂位置使用三个符号:-1,0,1。表示的值是位置系数乘以相应功率2的总和,就像二进制一样,差别在于一些系数可能是-1。一个数字在这个系统中可以有多个不同的表示。

Canonical 带符号的数字表示是相同的,但受限于没有两个连续数字非0。可以看出,每个数字在CSD中都有唯一的表示。

请参阅Parhi's Bit Level Arithmetic中的幻灯片31以及更多信息,包括二进制到CSD转换算法。

答案 1 :(得分:4)

什么是规范签名数字格式?

Canonical Signed Digit(CSD)是一种数字表示。 CSD演示的重要特征是:

  1. 数字的CSD表示由数字0,1和-1组成。 [12]。
  2. 数字的CSD演示文稿是唯一的[2]。
  3. 非零数字的数量最小[2]。
  4. 不能有两个连续的非零数字[2]。
  5. 如何将数字转换为其CSD演示文稿?

    首先,找到号码的binary演示文稿。

    示例1 让我们采用例如数字287,其为二进制表示的1 0001 1111。 (256 + 16 + 8 + 4 + 2 + 1 = 287)

    1 0001 1111
    

    从右边(LSB)开始,如果在一行中找到多个非零元素(1或-1),则取所有元素加上下一个零。 (如果MSB左侧没有零,则在那里创建一个)。我们看到这个数字的第一部分是

    01 1111
    

    在数字上加1(即将0更改为1,将所有1&0更改为0' s),并强制最右边的数字为-1。

    01 1111 -> 10 000-1
    

    您可以检查数字是否仍然相同:16 + 8 + 4 + 2 + 1 = 31 = 32 +( - 1)。 现在数字看起来像这样

    1 0010 000-1
    

    由于没有更多连续的非零数字,转换完成。因此,数字287的CSD表示为1 0010 000-1,即256 + 31-1。

    示例2

    一个更具挑战性的例子怎么样?数字345.在二进制中,它是

    1 0101 1001
    

    找到第一个位置(从righ开始),其中一行中有多个非零数字。也拿下一个零。添加一个,并强制最右边的数字为-1。

    1 0110 -1001
    

    现在我们刚刚创建了另一对,必须进行转换。取011,然后添加一个(获取100),并强制最后一位为-1。 (得到10-1)。现在数字看起来像这样

    1 10-10 -1001
    

    再做同样的事情。这一次,您将不得不想象MSB左侧的零。

    10 -10-10 -1001
    

    通过观察:1)没有连续的非零数字,您可以确保这是正确的CSD演示。 2)总和增加到325(512 - 128 - 32 - 8 + 1 = 345)。

    此算法的更正式定义可在[2]中找到。

    CSD演示背后的动机

    CSD也可能用于其他一些应用,但这是数字微电子学的观点。它通常用于数字乘法。 [12]。数字乘法包括两个阶段:计算部分产品和总结部分产品。让我们考虑10101011的乘法:

           1010
    x      1011
    

           1010
          1010
         0000
    +   1010 
    

    =   1101110
    

    正如我们所看到的,必须总结的非零部分乘积(1010' s)的数量取决于乘数中非零数字的数量。因此,部分乘积之和的计算时间取决于乘法器中非零数字的数量。因此,使用CSD转换数字的数字乘法比使用传统数字数字更快。 CSD表格比二进制表示(平均)包含少33%的非零数字。例如,传统的双精度浮点乘法可能需要100.2 ns,但在使用CSD演示时仅需93.2 ns。 [1]

    那么负面的呢?微电路中实际上有三种状态(电压电平)吗?不,使用负号计算的部分产品不会立即求和。相反,您将这些数字的2's complement(即否定呈现)添加到最终总和中。


    来源:

    [1] D. Harini Sharma,Addanki Purna Ramesh:使用Canonical Signed的浮点乘数 位

    [2] Gustavo A. Ruiz,Mercedes Grand:高效的标准数字重新编码