当使用一个或两个补码时,符号位是否会改变?

时间:2013-03-15 20:42:24

标签: binary twos-complement complement ones-complement

我一直在努力处理看似简单的概念,但我似乎一直在混合和混合二进制转换。

如果给出二进制数并应用1的补码,则反转所有位。使0的1和1的0。对于2的补码,你可以用1的补码反转这些位并加1。

这是否意味着你从字面上反转所有位?出于某种原因,我一直认为除了最左边的位(符号位)之外,所有位都应该被反转。这里有一些例子..有人可以告诉我,如果我这样做了吗?

1101001

1的比较:0010110

2的比较:0010111


01110101

1的比较:10001010

2的比较:10001011


011110110

1的比较:100001001

2的比较:100001011


感谢。

1 个答案:

答案 0 :(得分:1)

您的概念完全正确:

  • one's complement = invert everything
  • 二的补码=反转 一切,包括最左边的位,然后添加1

你的前两个例子是正确的,最后一个例子有点奇怪,因为你通常使用多个字节(8位)而你的例子有9位,但仍然适用相同的规则:

        (0000000)011110110
ones -> (1111111)100001001
twos -> (1111111)100001010  <-- I think you had a typo here, you stated the result would be 100001011

以下是关于该主题的精彩摘要文章:http://academic.evergreen.edu/projects/biophysics/technotes/program/2s_comp.htm