Math 什么是标准符号数字?

Math 什么是标准符号数字?,math,floating-point,Math,Floating Point,什么是(CSD)以及如何将二进制数转换为CSD并将CSD转换回二进制数?您如何知道CSD的一个数字是否应该被规范地选择为+、-或0?有符号数字二进制在两个位置的每一次幂中使用三个符号:-1、0、1。表示的值是位置系数乘以2的相应幂的和,就像二进制一样,区别在于一些系数可能是-1。在此系统中,数字可以有多个不同的表示形式 规范的有符号数字表示法是相同的,但受两个连续数字都不是0的约束。计算结果表明,每个数字在CSD中都有唯一的表示形式 有关更多信息,请参见中的幻灯片31,包括二进制到CSD转换算法

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

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

规范的有符号数字表示法是相同的,但受两个连续数字都不是0的约束。计算结果表明,每个数字在CSD中都有唯一的表示形式

有关更多信息,请参见中的幻灯片31,包括二进制到CSD转换算法。

什么是标准有符号数字格式? 规范有符号数字(CSD)是一种数字表示形式。CSD演示文稿的重要特点是:

  • 数字的CSD表示由数字0、1和-1组成。[,]
  • CSD对数字的表示是唯一的[]
  • 非零位数为最小值[]
  • 不能有两个连续的非零数字[]
  • 如何将数字转换为其CSD表示? 首先,找到数字的表示形式

    示例1 让我们以一个数字287为例,它在二进制表示中是1 0001 1111。(256+16+8+4+2+1=287)

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

    01 1111
    
    将数字加1(即将0改为1,将所有1改为0),并强制最右边的数字为-1

    01 1111 -> 10 000-1
    
    1 0110 -1001
    
    您可以检查数字是否仍然相同:16+8+4+2+1=31=32+(-1)。 现在数字是这样的

    1 0010 000-1
    
    1 10-10 -1001
    
    由于不再有连续的非零数字,因此转换完成。因此,编号287的CSD表示为10010000-1,即256+31-1

    示例2

    再来一个更具挑战性的例子。345号。在二进制中,它是

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

    01 1111 -> 10 000-1
    
    1 0110 -1001
    
    现在我们刚刚创建了另一对,必须进行转换。获取
    011
    ,并向其中添加一个(获取
    100
    ),并强制最后一个数字为-1。(获取
    10-1
    )。现在数字是这样的

    1 0010 000-1
    
    1 10-10 -1001
    
    再做同样的事情。这一次,您必须在MSB的左侧想象一个零

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

    有关此算法的更多正式定义,请参见[]

    CSD演讲背后的动机 CSD也可以用于其他一些应用,但这是数字微电子的前景。它通常用于数字乘法。[, ]. 数字乘法包括两个阶段:计算部分积和求部分积。让我们考虑<代码> 1010 和<代码> 1011 < /代码>:

    的乘法。
           1010
    x      1011
    


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

    那么消极的呢。微电路中实际上有三种状态(电压电平)吗?不,使用负号计算的部分积不会立即求和。相反,您将这些数字的(即负数表示)添加到最终总和


    资料来源:

    []D.Harini Sharma,Addanki Purna-Ramesh:使用规范符号的浮点乘法器 数字


    []Gustavo A.Ruiz,Mercedes Grand:高效的正则签名数字编码

    请不要关闭--从维基百科条目来看,这是一个合理的问题。我以前见过这些。好吧,它们被用来辅助某些算法(如除法),但最终被转换回普通二进制。FWIW,从我所看到的,它们在硬件中比在软件中更有意义,在软件中我们没有真正的三态位。是的,这是一个硬件结构,但我相信它也有并行的bignum应用程序。我在这个页面上找到了一些信息,维基百科的条目对我来说太少了。我希望stackoverflow上的人能充实一下这个话题:-P@Ross:当我在第一次评论中提到BigNum项目时,我指的是软件部门(很长的部门,对于大数字来说这不是最快的方式)。但它似乎也被用于硬件。所以,是有符号的数字表示法是规范的,而不是数字本身?有道理。如果要定义规范的有符号数字,它们应该是“0+”、“0-”、“0+0”、“0-0”和“00”,对吗?据我估计,在“00”位之前,每个CSD号码都会有一个使用上述“数字”集的表示形式。@supercat:我很确定您只需要
    0+
    0-
    0