符号-数值表示法,反码表示法,补码表示法

3
我的教授提出了一个问题,列出所有可以用一的补码、二的补码和符号大小表示法表示的正数和负数的列表:
使用4位数字,例如(5)10 = (0101)2 写出所有可以用四位数字的符号大小表示法、一的补码和二的补码表示的正数和负数。
现在,我不是在寻找答案,只是想要澄清一些细节。
对于符号大小表示法,第一位表示数字的符号。因此,在提供的示例中,负五为-5=(1101),其反码为(0101),补码为(1010)。
符号大小表示法仅允许三位数字显示数字,一位数字显示符号(从右到左的领先位)。这意味着我们只有8种组合。因此,这是从0到7的数字和-0-(-6)。而在一和二的补码中,我们有16个?因此是0-15和-0-(-15)。
有人能更好地解释这个问题吗?
1个回答

12

这里简要介绍了你提到的三种表达技术。

符号-大小表达法

在这种表示法中,我们可以使用任意数量的位数(2的幂)来表示数字。表示中有两个部分,符号和大小,正如名称所示。

如果我们想要用n位表示一个数字,

  • 第一位始终表示数字的符号。即正数为0,负数为1。
  • 剩余的位数(n-1)以二进制表示数字的大小。

例如,如果您想使用8位表示+25和-25:

  • (+25)10 = 0011001 和 (-25)10 = 10011001

补码

由于二进制数字系统仅有两个数字(0和1),因此一个数字的补码是另一个数字。即,0的补码为1,反之亦然。

取反码

在这种表示中,没有特定的比特用于表示符号,但MSB(最高有效位)可用于确定数字的符号。即,如果数字为正,则MSB为0,如果数字为负,则MSB为1。使用二进制数字并且使用特定的位数(例如8、16、32等位)。

  1. 如果数字是正数

    • 将数字转换为二进制
    • 将数字设置为特定的位数
  2. 如果数字是负数

    • 将数字转换为二进制
    • 将数字设置为特定的位数
    • 获取该值的补码

例如,再次采用上一个例子:

  • (+25)10
    • 将数字转换为二进制 -> (11001)2
    • 将数字设置为特定的位数 -> (0001 1001)
  • (-25)10
    • 将数转换为二进制 -> (11001)2
    • 将数字设定为特定位数 -> (0001 1001)
    • 获取该值的补码 -> (1110 0110)
  • 二进制补码

    这种表示技术与一的补码表示非常相似。主要区别在于当数字为负数时,在获取补码后,在LSB(最低有效位)上加1。

    例如,让我们使用相同的例子:

    • (+25)10
      • 将数转换为二进制 -> (11001)2
      • 将数字设定为特定位数 -> (0001 1001)
    • (-25)10
      • 将数转换为二进制 -> (11001)2
      • 将数字设定为特定位数 -> (0001 1001)
      • 获取该值的补码 -> (1110 0110)
      • 在LSB上加1 -> (1110 0110) + 1 = (1110 0111)

    2
    小修正:不是“one's complement”,而是“ones' complement”。 - undefined

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接