我一直在努力处理看似简单的概念,但我似乎一直在混合和混合二进制转换。
如果给出二进制数并应用1的补码,则反转所有位。使0的1和1的0。对于2的补码,你可以用1的补码反转这些位并加1。
这是否意味着你从字面上反转所有位?出于某种原因,我一直认为除了最左边的位(符号位)之外,所有位都应该被反转。这里有一些例子..有人可以告诉我,如果我这样做了吗?
1101001
1的比较:0010110
2的比较:0010111
01110101
1的比较:10001010
2的比较:10001011
011110110
1的比较:100001001
2的比较:100001011
感谢。
答案 0 :(得分: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