在计算机中,数字通常以原码、反码和补码的形式来表示,这些表示方法都是为了方便计算机进行二进制运算和处理。
1、原码
原码是一种最简单的二进制表示方法,用于表示整数和浮点数,直接将数值的二进制形式作为原码,正数的原码与其二进制形式相同,负数的原码则在其二进制表示前面添加一个负号。
2、反码
反码是在原码的基础上进一步改进,反码是正数和负数的一种特殊的二进制表示方法,正数的反码与其原码相同,负数的反码则是将原码中所有的1变为0,0变为1。
3、补码
补码是计算机中最常用的二进制表示方法。正数的补码与其原码相同,而负数的补码则是将反码加1。负数通常是以补码的形式来表示的,补码的引入可以使得计算机在进行加法和减法运算时更加简便。
反码补码原码的区别
1、适用场景
原码是最基本的编码方式,适用于简单的数值表示和计算。反码是在原码的基础上发展而来,主要用于解决正负数运算问题。补码是在反码的基础上进一步改进,主要用于解决计算机中数值的范围问题,使得计算机能够表示所有的整数。
2、编码方式
原码直接将数值的二进制形式作为原码,正数的原码与其二进制形式相同,负数的原码在其二进制表示前面添加一个负号。
反码则是将负数的原码进行翻转得到,正数的反码与其原码相同。补码是将反码表示的数值加1得到,正数的补码与其原码相同。
3、运算方式
原码可以直接进行算术运算,正负数的表示和运算较繁琐。反码的出现使计算机能够进行正负数的加减运算,但要先进行符号位的比较和翻转。补码的出现使计算机能够表示所有的整数,简化了减法运算,使减法运算可以转化为加法运算。
原码反码是干什么的? 为什么存在? 意义是什么?
--任何书上都没有指明。
--其原因就是:它们都没有存在的理由,也都没有存在的必要。
--计算机中,都是使用补码,根本就不用原码和反码。
--原码反码,只是存在于课本上、黑板上,学生毕业后,就再也见不到它们了。
--因为在实际工作中,根本就用不着它们。
所谓的补码,其来源,并非是原码反码取反加一。
补码,只是源于小学的知识点。
--你看十进制,两位数:0 ~ 99。
--那么有:27 + 99 = (一百)26,
--也可以:27-1 = 26。
如果你忽略进位,依旧保持两位数,这两种算法的功能,就是相同的。
即,舍弃了进位:
--正数,就能当负数使用。
--加法,也就能取代减法运算。
上过小学的人,都能懂这个。
在计算机中舍弃进位,负数就没有了,大家都是正数。
--因此,减法运算,也就不存在了。
--减法器,当然就没有任何用处了。
--计算机只用一个加法器,便可横行天下!
--这就是补码的来历和存在的意义。
在两位十进制时,舍弃进位,就是减去一百。
那么,加 99,再减 100,当然就是“-1”了。
对于八位二进制,进位就是 2^8=256。
那么,加上 255 (1111 1111),再舍弃进位,也就是“-1 ”。
同理,+254 (1111 1110),再舍弃进位,就是“-2 ”了。
。。。 。。。
最后,+128 (1000 0000),再舍弃进位,这就是“-128”。
这不过就是一个小学的知识点,计算机专家却故意不说明白。
偏要故弄玄虚,编造出来一个词:补码!
也可能,老外根本就不懂什么是进位、什么是舍弃进位。
老外的算术水平太洼了。
谁要是跟老外学算术,立刻、马上、直接就掉坑里去了。
二进制数,也是数。
舍弃进位后,正数就能当负数使用。
不论什么进制,都是这样的。
二进制数,也并没有什么特殊的。
此时的这个正数,仍然是还是数,并不能说它是“什么什么码”。
难道,+99,是原码吗? 是反码吗? 是补码吗?
二进制数中,根本就没有什么符号位,更不要说符号位也参加运算。
所谓的“机器数符号位原码反码取反加一符号位不变模符号位也参加运算”,都是不存在的谎言。