【问题标题】:add the 8-bit signed magnitude binary numbers - binary arithmetic添加 8 位有符号幅度二进制数 - 二进制算术
【发布时间】:2020-01-28 04:47:18
【问题描述】:

我正在尝试添加 8 位有符号幅度数:10111000 + 00010111

  0   1 1 0 0 0 0 0        carry

  1   0 1 1 1 0 0 0        (-56)
+ 0   0 0 1 0 1 1 1      + (+23)
____________________     ________
      1 0 0 1 1 1 1   !=   (-33)

我知道最高有效位 (MSB) 是符号位,不应添加。但是,我没有得到 (-33) 作为二进制答案,而且似乎也没有溢出。我不确定我是否以正确的方式做这件事。请帮忙。

【问题讨论】:

  • 最高位代表符号并不意味着不应该添加。

标签: math binary cpu-architecture data-representation


【解决方案1】:

不幸的是,符号幅度表示中的加法不像常见的补码表示那样简单。对于符号大小,您需要根据符号的组合选择正确的操作。如果你有等号,你只需添加大小。如果符号不相等,则从较大的值中减去较小的值并保留较大值的符号。所以,在你的情况下:

  0 0 0 1 1 1 0        borrow

  0 1 1 1 0 0 0        (56)
- 0 0 1 0 1 1 1      - (23)
____________________ ________
  0 1 0 0 0 0 1   ==   (33)

取较大量级的符号 (56) 会得到最终数字 1 0 1 0 0 0 0 1

【讨论】:

  • 所以你根本没有考虑最高位?
  • 只是在开头我们发现两个符号不相等,需要相减。
  • 但是,答案不应该是-33吗,当你看到问题时,以十进制形式,较大的56有一个负号,即(-56)+(+23)=( -33),其中结果采用较大幅度的符号。另外,我仍然不明白你为什么要减去,问题说要加法。
  • 抱歉,我混淆了两个输入数字的符号 - 已更正。减法是因为这就是符号大小中的加法的工作原理——如果你有等号,你就加;如果你有相反的符号,你减去。
  • @SamVitare:不要认为符号位是“最重要的”。在符号/大小中(与 1 或 2 的补码不同)它没有 位值。它的含义是作为其他位的修饰符。希望这只是一个术语问题,您只指最左边的位,最高位。
猜你喜欢
  • 1970-01-01
  • 2015-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多