Bit manipulation 负零的2s补码

Bit manipulation 负零的2s补码,bit-manipulation,bit,twos-complement,complement,Bit Manipulation,Bit,Twos Complement,Complement,我有个问题:你知道2s的补码,所以你可以得到一个正数的负数,用倒数加一。e、 g 8 Bit 121 = 0111 1001 1st= 1000 0110 + 0000 0001 --------- 1000 0111 --> -121 那么现在如果我们有一个-0 零看起来像8位 0000 0000 所以负0应该是 1111 1111 + 0000 0001 = 10000 0000 但那是512 所以我想我误解了一些东西100000000b是2

我有个问题:你知道2s的补码,所以你可以得到一个正数的负数,用倒数加一。e、 g

8 Bit
121 = 0111 1001
 1st= 1000 0110
  +   0000 0001
      ---------
      1000 0111 --> -121 
那么现在如果我们有一个-0

零看起来像8位

0000 0000
所以负0应该是

 1111 1111 + 0000 0001
= 10000 0000
但那是512


所以我想我误解了一些东西

100000000b
是256,而不是512。截断为8位,为0

这是因为对于二的补码,零就是零。没有正零或负零


将其与补码或符号位进行比较,其中正零和负零是不同的值。

展开我之前对该问题的评论


8位中的
1111111+0000 0001
0000
,第九位丢失,因为它没有位置

是的,负数的补码是正数

-121 = 1000 0111
 1st = 0111 1000
   +   0000 0001
       ---------
       0111 1001 --> 121 
将它们视为一个圆,在一个点上有0,每次上升到另一个点时加1(8位128)。在该点,符号被切换,绝对值开始减小,例如:
128+1=-127
,当继续加1时,值返回到0,圆完成


因此,给定一个位数,你只有那么多的位数,没有更多,如果你想要对值进行签名,你实际上只有x-1位作为值,因为最高有效位用于符号(0->+;1->-)

2s补码通常用于固定宽度的数字。否则,您如何知道在第一步中何时停止反转位?你怎么知道哪个位是最高有效位呢?8位中的
1111111+0000 0001
0000 0000
第九位丢失了,因为没有位置从it@user3580294我认为“8位”告诉你的宽度是正确的。。。它也应该停下来,因为你不考虑下一个00not@Serpiton那么负数的2s补数是正数还是。。。或者是s2s补码-0->0?那么2的补码-0->0?我的意思是-0=1000 4位和1000 0000 8位否,
-0
0000
4位和
0000
8位,就像
+0
一样。二的补语不能区分。