负数的补码如何计算?举个例子!
就比如-9补码是11110111。
9的源码为00001001,如果是负数的话,补码为最高位置1,其余取反也就是11110110,然后在最低位加1即可即11110111。
计算机中的负数是以其补码形式存在的补码=原码取反+1。
一个字节有8位可以表示的数值范围在-128到+127。用二进制表示也就是10000000-01111111(注意:最高位表示符号)。最高位是1的都是负数最高位是0的都是正数。
扩展资料:
补码乘法
补码的乘法不具备【X*Y】补=【X】补×【Y】补的性质。但是【X*Y】补==【X】补×Y,所得结果再取补码,如x=101,y=011,[x*y]补=-[(-101)*011]=-[011*011]=-01001=10111。
其中,若【Y】补=y31y30……y0,则Y=-y31*2^31+y30*2^30+……+y0*2^0
原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为1(0有两种表示:+0和-0),其余位表示数值的大小。
负数的补码是:符号位为1,其余各位求反,末位加1
反码是:符号位为1,其余各位求反,但末位不加1
也就是说,反码末位加上1就是补码
-1011
原码:11011
反码:10100 //负数时,反码为原码取反
补码:10101 //负数时,补码为原码取反+1
移码:00101 //原数+10000
正数,本身就是补码。
负数,就用它的正数,减一取反,即可得到补码。
如:+9 的二进制是:0000 1001。
下面求-9 补码:
先减一:0000 1001 - 1 = 0000 1000;
再取反:1111 0111。
所以有:-9 补码 = 1111 0111。
这不就完了吗!
简不简单? 意不意外?
原码反码符号位,讨论这些垃圾干嘛?
这些垃圾,只是那些人用来骗吃骗喝的!
在计算机系统中,数值,一律采用补码表示和存储。
在计算机中,原码和反码,都是不存在的。
所以,求补码,也不必使用它们。
补码,是由一系列二进制码组成的。
实用的有 8 位或 16 位。高档的还有 32、64 位。
补码中的每一位,都对应一位十进制数。
要注意:最高位所对应的数值,是负数。
那么,八位的补码,各个位的数值,就是:
-128、64、32、16、8、4、2、1。
--------------------
如果,有一个补码是:1011 1001。
它代表的数值,就是:-128 + 32 + 16 + 8 + 1 = -71。
倘若首位是 0,即为:0011 1001。
求数值,就更简单了:32 + 16 + 8 + 1 = +57。
--------------------
掌握了上述规律,由数值,再求补码,也就很简单了。
例如,求-125 的八位补码。
这是负数,首位一定是 1,代表了数值-128。
与-125 相比较,还应该有个 3。
用七位数值位表示 3,就是:000 0011。
综合在一起,-125 的补码,就是:1000 0011。
--------------------
求补码、求数值,都是很简单的事。
并不需要拐到“原码反码取反加一符号位不变”去。
老外数学不好,脑子不好用,才会弄出哪些个骚操作!
-0000 0001 取反得到-1111 1110 然后再加1得到-1111 1111 即为它的补码.