符号幅度和补码



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

使用8位有符号幅度、1的补码和2的补码以二进制形式表示以下十进制数:

  1. 88
  2. -76

我的解决方案是:

88 = 01011000 8 bit sm
10100111 1s complement
10101000 2s complement
-76 = Not sure about this one

在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)=1001011。

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

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

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

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

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

您所需格式的数字如下所示:
1000 0110,等于十进制的-6:<br+1***-表示数字的HAS符号(减号),>
*000 0110-包含数字的二进制表示。

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

当你有一个负数(例如-7)时,你的最高比特等于1:1…

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

然后将其合并:
(D)-7=1000 0111。

请注意,在这种格式中,您只能保存-127到127之间的数字-您只剩下7个低位作为值,而第8位必须留给符号。

1s补充示例:

(D) -7=1000 0111,8位带符号。当你加上一个数字,它是1互补的,你应该得到:1111 1111
1000 0111-你的数字
0111 1000+-你的号码是1互补

形式上,您可以执行以下操作:
11111 1111
1000 0111-您的号码
<-你号码的1互补

2s互补:

当你计算互补的1时,只需加1:1000 0111-您的号码
0111 1000-您的号码的1互补
0111 1001-您的数字的2互补

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

最新更新