计算机原码反码补码怎样计算
计算机原码反码补码计算方法:
1、原码
原码就是符号位加上真值的绝对值,即用第一位表示符号,其余位表示值。比如如果是8位二进制:
[+1]原 = 0000 0001
[-1]原 = 1000 0001
第一位是符号位. 因为第一位是符号位, 所以8位二进制数的取值范围就是:[1111 1111 , 0111 1111]
即[-127 , 127]
原码是人脑最容易理解和计算的表示方式。
2、反码
反码的表示方法是:正数的反码是其本身。负数的反码是在其原码的基础上, 符号位不变,其余各个位取反。
[+1] = [00000001]原 = [00000001]反
[-1] = [10000001]原 = [11111110]反
可见如果一个反码表示的是负数,人脑无法直观地看出来它的数值。通常要将其转换成原码再计算。
3、补码
补码的表示方法是:正数的补码就是其本身。负数的补码是在其原码的基础上,符号位不变,其余各位取反,最后+1。(即在反码的基础上+1)。
[+1] = [00000001]原 = [00000001]反 = [00000001]补
[-1] = [10000001]原 = [11111110]反 = [11111111]补
对于负数,补码表示方式也是人脑无法直观看出其数值的。通常也需要转换成原码在计算其数值。
扩展资料:
原码,反码和补码是完全不同的。既然原码才是被人脑直接识别并用于计算表示方式,为何还会有反码和补码呢?
首先,因为人脑可以知道第一位是符号位,在计算的时候我们会根据符号位,选择对真值区域的加减。但是对于计算机,加减乘数已经是最基础的运算,要设计的尽量简单。计算机辨别"符号位"显然会让计算机的基础电路设计变得十分复杂。于是人们想出了将符号位也参与运算的方法。我们知道,根据运算法则减去一个正数等于加上一个负数,即: 1-1 = 1 + (-1) = 0 , 所以机器可以只有加法而没有减法,这样计算机运算的设计就更简单了。
于是人们开始探索将符号位参与运算,并且只保留加法的方法。
--任何书上都没有指明。
--其原因就是:它们都没有存在的理由,也都没有存在的必要。
--计算机中,都是使用补码,根本就不用原码和反码。
--原码反码,只是存在于课本上、黑板上,学生毕业后,就再也见不到它们了。
--因为在实际工作中,根本就用不着它们。
所谓的补码,其来源,并非是原码反码取反加一。
补码,只是源于小学的知识点。
--你看十进制,两位数:0 ~ 99。
--那么有:27 + 99 = (一百)26,
--也可以:27-1 = 26。
如果你忽略进位,依旧保持两位数,这两种算法的功能,就是相同的。
即,舍弃了进位:
--正数,就能当负数使用。
--加法,也就能取代减法运算。
上过小学的人,都能懂这个。
在计算机中舍弃进位,负数就没有了,大家都是正数。
--因此,减法运算,也就不存在了。
--减法器,当然就没有任何用处了。
--计算机只用一个加法器,便可横行天下!
--这就是补码的来历和存在的意义。
在两位十进制时,舍弃进位,就是减去一百。
那么,加 99,再减 100,当然就是“-1”了。
对于八位二进制,进位就是 2^8=256。
那么,加上 255 (1111 1111),再舍弃进位,也就是“-1”。
这不过就是一个小学的知识点,计算机专家却故意不说明白。
偏要故弄玄虚,编造出来一个词:补码!
也可能,老外根本就不懂什么是进位、什么是舍弃进位。
老外的算术水平太洼了。
谁要是跟老外学算术,立刻、马上、直接就掉坑里去了。
二进制数,也是数。
舍弃进位后,正数就能当负数使用。
不论什么进制,都是这样的。
二进制数,也并没有什么特殊的。
此时的这个正数,仍然是还是数,并不能说它是“什么什么码”。
难道,+99,是原码吗? 是反码吗? 是补码吗?
二进制数中,根本就没有什么符号位,更不要说符号位也参加运算。
所谓的“机器数符号位原码反码取反加一符号位不变模符号位也参加运算”,都是不存在的谎言。