负数的补码怎么求 负数的补码计算方法
在计算机中,原码和反码,都是不存在的。
求补码,也用不着它们。
所以,原码和反码,根本就没有用!
------------------------
补码,其实,就是一个“代替负数做运算”的正数。
且看 2 位 10 进制数的运算:
25 - 1 = 24
25 + 99 = (一百) 24
你舍弃进位,只取两位,这两种算法,功能就完全相同。
那么,+99,就代替了-1。加法,也就代替了减法。
这不就是用正数(补数)代替了负数吗?
由负数求对应的补数,计算公式是: 补数 = 负数 + 10^n。
式中: n 是补数的位数。
10^n 是 n 位 10 进制数的计数周期。
-------------------------
计算机用二进制,补数,就改称为:补码。
计算机所能计算的位数,是固定的,如八位机、16 位。。。
八位二进制是:0000 0000~1111 1111 (十进制 255)。
八位二进制的计数周期,是:2^8 = 256。
求负数补码的计算公式,也是: 负数 + 周期。
-1 补码就是:-1 + 256 = 255 = 1111 1111(二进制)。
-2 补码就是:-2 + 256 = 254 = 1111 1110(二进制)。
。。。
-128 补码就是:128 = 1000 0000(二进制)。
正数,必须直接参加运算,不许转换。
所以,正数不存在补码。
求补码,根本就不用“原码反码符号位取反加一”。
-------------------------
举例说明,用八位补码计算: 5 - 7 = -2。
5 = 0000 0101
-7 的补码= 1111 1001
--相加-------------
得 (1) 1111 1110 = -2 的补码
舍弃进位,只保留八位,这就用加法,实现了 5-7。
2、原码,最高位为符号位,0代表正数,1代表负数,非符号位为该数字绝对值的二进制表示。表示简单、运算复杂(符号位不参加运算,要设置加法、减法器,不能直接判断执行加法还是减法运输,分同号和异号)、0的表示不唯一。
3、反码,正数的反码与原码一致;负数的反码是对原码按位取反,只是最高位(符号位)不变。表示相对原码复杂、运算相对简单(符号位参加运算,只需要设置加法器,但符号位的进位位需要加到最低位)、0的表示不唯一。
在计算机系统中,数值,一律采用补码表示和存储。
数值 0,在八位机中,就是用八个 0(0000 0000)存放的。
那么,+1 怎么存放捏? 显然就是“0+1”。
即:0000 0000 + 1 = 0000 0001。
这就是+1 的补码。
另外,-1 怎么存放捏? 当然就是“0-1”。
用二进制计算“0-1”,你会不会?
即:0000 0000 - 1,八位的结果就是 1111 1111。
所以,1111 1111,这就是-1 的补码。
-------------
一般化,-X 怎么存放? 显然就是“0-X”了。
你用二进制计算一下“0-X”,你就能求出-X 的补码。
另外,+X 怎么存放? 也就是 0 + X = X。
所以,正数的补码,就是其本身。
-------------
求补码,就是这么简单。
根本就用不到“符号位原码反码取反加一符号位不变”!
老外脑子不好用,二进制的加减法,他们做不出来。
所以,才弄出那一大批骚操作。