什么是补码?
在计算机系统中,负数,一律采用补码表示和存储。什么是补码?补码,就是“代替负数”的正数。你看时钟,时针转一圈,周期是 12。倒拨 3 小时,可以用正拨 9 小时代替。你看 2 位 10 进制数,计数周期是 10^2 = 100。那么有: 24 - 1 = 23 24 + 99 = (一百) 23只要忽略进位,+99 就可以代替-1。而且,加法,也就代替了减法运算。这些代替负数的正数,就称为:负数的补数。计算公式:补数=负数+周期。---------------------计算机用二进制,补数,就称为:补码。8 位 2 进制数,计数周期就是 2^8 = 256。此时,-1 就可以用 255 = 1111 1111 代替。同理,-2 的补码就是 254 = 1111 1110。。。。什么是补码?补码的定义式,如下: 负数的补码 = 负数 + 周期 = 周期-| 负数 |。 零和正数,不存在补码。也不许变换。---------------------使用了补码之后,在计算机中,就没有负数了。同时,也就消除了减法运算。因此,计算机的硬件,也就可以简化了。这就是使用补码的意义。---------------------补码的特点,来自于“计数系统的周期性”。补码的特点,与原码反码毫无关系。从“符号位原码反码取反加一”来学习补码,是不能理解“补码的意义”的。“取反加一符号位不变”这些,并没有理论依据。这都是某些老外随口瞎编的,就不要当真了。
为何要用补码?
在计算机系统中,数据,一律采用补码来表示和存储。原因在于,使用补码,可以将加法和减法统一处理。补码,就是补码,与原码反码毫无关系。从原码反码开始学习,就不能理解“为何要用补码?”。-------------------------补码,其实就是一个“代替负数运算的正数”。比如十进制运算: 24 - 1 = 23 24 + 99 = (一百) 23舍弃进位,+99 就可以代替-1。这时,减法,也就转换成加法了。那么,+99 就被称为-1 的补数。舍弃的进位,是 2 位 10 进制的计数周期:10^2 = 100。求补数的公式,大家都可以推出来: 负数 + 周期。-------------------------其实,在三角函数中,大家都知道: -π/2 和 +3π/2,这两个角度,功能也是相同的。负角度,和正角度,要怎么变换呢? 也是用这样的公式: 正角度 = 负角度 + 周期(2π)。-------------------------计算机用二进制,补数,就改称为:补码。8 位 2 进制的计数范围是:0000 0000 ~ 1111 1111。换算成十进制,就是:0 ~ 255。其计数周期是:2^8 = 256。那么,-1 的补码就是 255 ( 即 1111 1111 )。-2 的补码,是:-2 + 256 = 254 = 1111 1110。。。。-128 的补码是:128 = 1000 0000。以上就是八位二进制所能代表的 128 个负数。求补码的公式,也仍然是:负数 + 周期。正数,不需要变换,直接就可以进行运算。所以,正数,根本就没有补码。-------------------------求补码,不必联系到“原码反码符号位取反加一”。那些乱七八糟的事,都是不需要的。老外数学不好,万般无奈,才弄这些“隔路”的花样。
补码怎么算
补码的算法如下:一、补码加法[X+Y]补 = [X]补 + [Y]补例:X=+0110011,Y=-0101001,求[X+Y]补[X]补=00110011 [Y]补=11010111[X+Y]补 = [X]补 + [Y]补 = 00110011+11010111=00001010注:因为计算机中运算器的位长是固定的,上述运算中产生的最高位进位将丢掉,所以结果不是100001010,而是00001010。二、补码减法[X-Y]补 = [X]补 - [Y]补 = [X]补 + [-Y]补其中[-Y]补称为负补,求负补的方法是:负数的绝对值的原码所有位按位取反;然后整个数加1。例:1+(-1)[十进制]1的原码00000001 转换成补码:00000001-1的原码10000001 转换成补码:111111111+(-1)=000000001+11111111=0000000000000000转换成十进制为00=0所以运算正确。三、补码乘法设被乘数【X】补=X0.X1X2……Xn-1,乘数【Y】补=Y0.Y1Y2……Yn-1。【X*Y】补=【X】补×【Y】补,即乘数(被乘数)相乘的补码等于补码的相乘。补码的含义:计算机中的有符号数有三种表示方法,即原码、反码和补码。三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位,三种表示方法各不相同。在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理 。
如何求补码
回答问题之前先让我们来了解一下:一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1。原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值。反码的表示方法是:正数的反码是其本身;负数的反码是在其原码的基础上, 符号位不变,其余各个位取反。补码的表示方法是:正数的补码就是其本身;负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1 (即在反码的基础上+1)。因此我们在求一个数的补码之前,应当先求出这个数的原码。将一个数转化为二进制数,既是它的源码。可通过除二求余法算得(既对一个数除二求余,这会得出一个数和一个余数,再对得出来的数进行求余,得出余数,以此类推,最后将余数倒写即可)。如是一个正数,它的补码与它的原码相同;如果是一个负数,它的补码是在它的原码的基础上,开头符号位不变,其余各位取反,最后再在其上面+1(既在反码的基础上+1)。