C语言中负数的补码怎么求

2024-12-22 15:21:57
推荐回答(5个)
回答1:

正数,本身就是补码。

负数,就用它的正数,减一取反,即可得到补码。

如,已知:+9 的二进制是:0000 1001。

下面求-9 补码:

先减一:0000 1001 - 1 = 0000 1000;

再取反:1111 0111。

所以有:-9 补码 = 1111 0111。

这不就完了吗!

简不简单? 意不意外?

原码反码符号位,讨论这些垃圾干嘛?

这些垃圾,都是用来骗吃骗喝的!

回答2:

对于有符号数(分正负的),的最高位是符号位
65的二进制是
0
1000001
补码运算为按位取反
再加1
按位取反:1
0111110
加1:
1
0111111
直接转换为十进制的话,你把它当成无符号数把1也算了,所以不是-65

10111111到-65:
计算机根据符号位为1判断是负数
按位取反:01000000
加1:
01000001
这就是65,然后是负数,就是-65

回答3:

7的二进制0000
0000
0000
0111,~是按位反,
结果是 1111
1111
1111
1000
注意最高位是1,说明这是个负数,负数在计算机中是补码,补码是十进制多少呢,
把补码负号不变,其它取反,最后加1,这个就是原码.
即1000
0000
0000
0111+1
=1000
0000
0000
1000
是-8

公式~n
结果是
-(n+1)

回答4:

什么意思没明白诶直接用 ~运算 就能求出1的补数 +1就行了

回答5:

八位二进制 9是00001001 逐位取反 11110110 加一 11110111 加符号位 111110111