请问-127和127的32位的二进制原码和补码怎么写?

img


我这个是错误的吗?正确的怎么写?

我写的那个错在了哪里,我的思路是-127分解后得出原码为:1 1111111,然后除符号位后补24个0

正数:
原反补码相同


负数:
原码
反码 = 原码除符号位外按位取反
补码 = 反码+1


-127的补码错了
反码是:11111111 11111111 11111111 10000000
补码应该是:11111111 11111111 11111111 10000001


-127I127的结果为-1,计算如下:
-127:11111111 11111111 11111111 10000001
127:00000000 00000000 00000000 01111111
所有位进行或操作,可得
11111111 11111111 11111111 11111111
减去1后,得反码
11111111 11111111 11111111 11111110
除符号位外按位取反,得原码
10000000 00000000 00000000 00000001
因此可得结果为 -1。


如有帮助,还请采纳!谢谢!

结果没错,但-127补码错了,-127补码是,在反码基础上+1,反码是,除符号位外,其余各位取反,因此反码是11111111 11111111 11111111 10000000,补码是11111111 11111111 11111111 10000001

可以看下我之前写过的这篇文章 https://www.cnblogs.com/ajream/p/16375196.html

负数的补码是其绝对值的源码取反再加1
所以-127的补码计算,先得出127的源码
0000 0000 0000 0000 0000 0000 0111 1111
然后取反
1111 1111 1111 1111 1111 1111 1000 0000
再加1就是-127的补码
1111 1111 1111 1111 1111 1111 1000 0001
所以你的-127补码计算是错误的