-128的二进制补码是怎么得来的?
补码10000000唯一的表示-128是一个规定,不需要推算,理由如下:现在来推-128的补码:-128的补码:10000000-10000000(+128没有符号位)=10000000-128的反码:11111111(10000000+1=10000000+11111111=11111111)-128的原码:10000000(反码取反)往回推:-128的原码10000000(-128,进位被舍去)-128的反码11111111-128的补码10000000(11111111(反码)+1=10000000,这里实际上真正相加的是11111111后面的7位,第1位是符号位始终不会变,所以,当进到第8位的时候,就表示溢出了,会被舍弃。0只有一个补码00000000,如果是这样,那么10000000就不会表示成-0的补码即:补码10000000唯一的表示-128,在补码中用(-128)代替了(-0),所以补码的表示范围为:(-128~0~127)共256个.注意:(-128)也有相对应的原码和反码,它的反码是(11111111)原码仍然是(10000000)(-128)扩展资料:负数的补码就是对反码加1,而正数不变,正数的原码反码补码是一样的。补码的得来:是为了让负数变成能够加的正数,所以,负数的补码=模-负数的绝对值。比如:-1补码:11111111(00000001,也就是-1的绝对值,取反加1得来)当一个数要减1的时候,可以直接加11111111。
二进制运算为什么要用补码进行运算?
补码的功能,类似于: 时针倒拨 3 小时,与正拨 9 小时,效果相同。利用这种思路,计算机中的负数,也可以改为正数(即补码)。同时,减法运算,也就可以用加法运算代替了。那么,借助于补码,就能统一加减法,够简化计算机的硬件。十进制比较容易理解: 25 - 1 = 24 25 + 99 = (一百) 24。只要忽略进位,+99 就能代替-1。+99 就称为-1 的补数。在这里用了 2 位 10 进制。求补数的算法:补数 = 负数 + 10^2。通用的公式是:补数 = 负数 + 10^n。 n 是位数。-----------------------计算机用二进制,补数,就改名为:补码。一个字节,是 8 位 2 进制。计数范围是:0000 0000 ~ 1111 1111(十进制 255)。计数周期是:2^8 = 256。补码的定义式:负数的补码=负数+2^n。那么:-1 的补码=-1 + 256 = 255 = 1111 1111。-2 的补码=-2 + 256 = 254 = 1111 1110。。。。例如,7-2 = 5,用补码计算如下: 7 = 0000 0111 [-2] 补 = 1111 1110 ---相加------------ 得: (1) 0000 0101 = 5舍弃进位,结果就完全正确。借助于补码,负数就没有了,从而就把“减法转换为加法运算”。-----------------------补码的来源,与原码反码毫无关系。“取反加一、符号位也能参加运算”,这些,都没有什么理论依据。通过原码反码,已经证明“符号位能参加运算”是错误的。补码能正确运算,并不是什么“符号位也参加运算”。因为,补码,它就是一个正数,什么符号位也没有。补码的全部位,都是代表数据的,当然就都可以参加运算。
十六进制数的原码补码反码怎么表示
无论是十进制还是十六进制的数,在求补码时,都先转化为二进制,再进行补码的转换。例如:15的十六进制为F,转化为二进制为00001111,再转为反码00001111,最后转化为补码00001111。正整数的补码是其二进制表示,与原码相同。扩展资料:原码(true form)是一种计算机中对数字的二进制定点表示方法。原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为1(0有两种表示:+0和-0),其余位表示数值的大小。在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。补码的特性:1,一个负整数(或原码)与其补数(或补码)相加,和为模。2,对一个整数的补码再求补码,等于该整数自身。3,补码的正零与负零表示方法相同。参考资料来源:百度百科-补码