【问题标题】:Sign magnitude, One's complement, Two's Complement符号幅度,一个补码,二进制补码
【发布时间】:2016-05-18 15:46:25
【问题描述】:

所以我的教授有一个问题要列出所有可以用 One、二进制补码和符号大小表示的正数和负数:

使用 4 位数字,例如 (5)10 = (0101)2 写出所有正数和所有负数,可以用符号大小、一个补码和二进制补码的四位表示。

现在,我不是在寻找答案,只是为了澄清。

  • 对于符号幅度,第一位表示数字的符号。 所以在提供的例子中,负五是-5=(1101),那些 补码 = (0101) 二进制补码 (1010)
  • 符号幅度仅允许三位显示数字,一位表示 符号(从右到左的前导位。)这意味着 我们只有 8 种组合。所以这是0-7和-0-的数字 (-6) 一个和两个我们有 16 个?所以 0-15 和 -0-(-15)

谁能更好地解释这个问题?

【问题讨论】:

  • 请更好地格式化您的问题。

标签: binary numbers


【解决方案1】:

以下是您提到的所有三种表示技术的简要说明。

符号和幅度表示

在这种表示中,我们可以用任意位数(2 的幂)表示数字。表示中有两个部分。顾名思义,符号和大小。

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

  • 第一位总是代表数字的符号。即 0 表示正数,1 表示负数。
  • 其余位 (n-1) 表示二进制数的大小。

例如如果要使用 8 位表示 +25 和 -25: (+25)10 = 0011001 和 (-25)10 = 10011001

补充

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

一个人的补充

在这种表示中,没有特定的位来表示符号,但是可以使用 MSB(Most Significant Bit)来确定数字的符号。即,如果数字为正,则 MSB 为 0,如果数字为负,则为 1。使用二进制数,也使用特定的位大小。 (例如 8、16、32 等位)。

  1. 如果是正数

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

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

例如再看前面的例子

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

补码

这种表示技术与 One's Complement Representation 非常相似。主要区别是当数为负数时,得到补码后LSB(Least Significant Bit)加1。

例如让我们举个同样的例子

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

【讨论】:

  • 小改正:不是“一个补”,而是“一个补”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-28
  • 2015-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多