为什么在进行二元减法时会使用2的恭维?

时间:2014-10-25 17:34:05

标签: binary

嗨,大家好,我只是有点混淆二进制减法。我有以下疑问:

1) Why not just subtract normally(subtracting two binary number without converting to any other form) using binary numbers? 
2) Why cant we use singed numbers to subtract, why wont it work? 
3) Why is 2's compliment used?

2 个答案:

答案 0 :(得分:0)

2s补码是一种将数字表示为负数的方法。通过将例如0011转换为2s补码,您得到1101.当您添加两个补码时,您将以一种易于计算机使用当前硬件计算的方式得到正确的答案。

例如,0100(4) - 0011(3)需要一个减法硬件,但是0010 + 1101(0011的两个补码)得到1111.2s补充得到0001,这是正确答案。

在设计处理器时,您可以使用仅添加的相同ALU,并将第二个数字转换为2s补码(与ADD相比这是微不足道的,并且有效地将其渲染为自身的负数),从而重用一个ADD组件,而不是让第二个组件以其他方式减去。

基本上,当给定x时,2s补码是表示-x的保证方式。添加-x可以更好地利用附加硬件。

答案 1 :(得分:0)

这与如何表示签名号码有关。

替代方案是一个补充,其中最高位也作为符号。

在一个补充中添加4和-3:

0000 0100
1111 1100

两个补语中的相同

0000 0100
1111 1101

要获得所需的0000 0001,两个补码要容易得多。在需要更少的门来实现计算逻辑的意义上更容易。