签名与无签名解释

时间:2012-06-27 10:06:25

标签: assembly

只想知道有关签名与无签名解释的内容。如果我说如果一个数字是无符号整数,它的值通常是通过将二进制转换为十进制来计算的,那么我是正确的。但是当它涉及有符号整数时,首先记录符号位(msb)然后计算二进制值使用2的补码;计算出的值是带有符号的实际值。

我是对的还是遗失了什么?

2 个答案:

答案 0 :(得分:1)

是的,你是对的。将以 2的补码形式表示的有符号整数转换为十进制数字时,您就是这样做的。 2的补充是英特尔处理器存储和使用有符号整数进行数学运算的方法。

注意:但是这个答案关于英特尔机器如何表示有符号整数。这是一般的。

用于转换为十进制的技术实际上取决于硬件使用的表示形式。

硬件设计人员可以选择将签名号码存储为:

  1. Sign-Magnitude(1位指定符号,其他指定幅度,无补码)
  2. 1的补码(其中,8位11111111表示-000000000表示+0
  3. 2的补充(在通用硬件中很流行,如英特尔)
  4. ......(还有其他方法。请参阅Wikipedia article
  5. 我们人类在阅读我们首选的十进制形式时,需要使用相应的“转换”。

    e.g。如果您正在设计主要进行乘法运算的硬件,那么以符号幅度形式存储有符号整数会有所帮助。您只需将符号和大小相乘即可。另一方面,2的补码是a little unwieldy to multiply, but not much

    当然,2的补充是大多数硬件(几乎所有通用CPU)存储签名号码的方式。这使得添加成为一块蛋糕。

答案 1 :(得分:0)

您所描述的是将带符号的二进制整数转换为带有十进制数字的人类可读字符串的最典型方法。

但是,这不是唯一的方法。您可以先将2的补码负3位值111转换为“7”,然后从中减去“8”并达到“-1”。