-3

我需要知道如何解决这个问题

使用 8 位有符号幅度、一个补码和二进制补码表示以下二进制十进制数:

  1. 88
  2. -76

我的解决方案是:

 88 = 01011000 8 bit sm
      10100111 1s complement
      10101000 2s complement

-76 = Not sure about this one
4

2 回答 2

1

在 8 位有符号幅度中,MSB 表示数字的符号,无论是正数还是负数。

88 = 01011000

     ^(MSB) this is signed bit,0 for positive.

在 Decimal 中,为了得到 -76,我们从组合数 (256) 中减去 76,得到 256 - 76 = 180。

-76 = 10110100

      ^(MSB) this is signed bit, 1 for negative.

对于一个的补码表示,只需将位反转,即,将 0 更改为 1,将 1 更改为 0。

因此,86(one's complement)= 10100111。

并且,-76(one's complement)= 01001011。

此外,我们通过在数字的二进制数表示中加 1 来获得二进制补码。

因此,86(two's complement)= 10101000。

并且,-76(two's complement)= 01001100。

于 2015-04-25T17:13:10.493 回答
0

此链接应该可以帮助您解决问题 - 它非常简短且直接: http ://www.cs.uwm.edu/classes/cs315/Bacon/Lecture/HTML/ch04s11.html

8位有符号幅度的简短解释:

您所需格式的数字如下所示:
1000 0110,等于十进制中的 -6:
1*** **** - 表示数字有符号(负号),
*000 0110 - 包含二进制表示数字。

当您有一个正数时,您只需将其转换为二进制形式:
(D) 7 = 0000 0111 (D) 20 = 0001 0100

当您有一个负数(例如 -7)时,您的最高位等于 1:1...

并且该值被简单地转换为二进制形式:
(D) 7 = 111 = 000 0111

然后你把它结合起来:
(D)-7 = 1000 0111。

请注意,在这种格式中,您只能保存范围从 -127 到 127 的数字 - 您只剩下 7 个低位用于值,而第 8 位必须用于符号。

1s 互补示例:

(D) -7 = 1000 0111 8 位有符号。当您添加一个数字并且它是 1s 互补时,您应该得到: 1111 1111
1000 0111 - 您的数字
0111 1000 + - 您的数字的 1s 互补
^^^^^^^^^
1111 1111

形式上,你可以做如下操作:
1111 1111
1000 0111 - - 你的号码
^^^^^^^^^
... <- 你的号码补1

2s互补:

当您计算 1s 互补时,只需将 1 添加到它: 1000 0111 - 您的号码
0111 1000 - 您的号码的 1s 互补
0111 1001 - 您的号码的 2s 互补

尝试自己做这件事并发布你的答案——这样你会学到更多。

于 2015-04-25T16:57:50.570 回答