正数,本身就是补码。
负数,就用它的正数,减一取反,即可得到补码。
如,已知:+9 的二进制是:0000 1001。
下面求-9 补码:
先减一:0000 1001 - 1 = 0000 1000;
再取反:1111 0111。
所以有:-9 补码 = 1111 0111。
这不就完了吗!
简不简单? 意不意外?
原码反码符号位,讨论这些垃圾干嘛?
这些垃圾,都是用来骗吃骗喝的!
对于有符号数(分正负的),的最高位是符号位
65的二进制是
0
1000001
补码运算为按位取反
再加1
按位取反:1
0111110
加1:
1
0111111
直接转换为十进制的话,你把它当成无符号数把1也算了,所以不是-65
从
10111111到-65:
计算机根据符号位为1判断是负数
按位取反:01000000
加1:
01000001
这就是65,然后是负数,就是-65
7的二进制0000
0000
0000
0111,~是按位反,
结果是 1111
1111
1111
1000
注意最高位是1,说明这是个负数,负数在计算机中是补码,补码是十进制多少呢,
把补码负号不变,其它取反,最后加1,这个就是原码.
即1000
0000
0000
0111+1
=1000
0000
0000
1000
是-8
公式~n
结果是
-(n+1)
什么意思没明白诶直接用 ~运算 就能求出1的补数 +1就行了
八位二进制 9是00001001 逐位取反 11110110 加一 11110111 加符号位 111110111