正数的原码、反码、补码是相同的吗?
相同。
正数的原码=反码=补码。引进补码的作用是为了让计算机更方便做减法。
例如:按时间12个小时来算,现在的准确时间是4点,有一个表显示的是7点,如果要校准时间,我们可以将时针退7-4=3格,也可以向前拨12-3=9格,缺哪计算机做减法就可以转化成-3=+9,这样可以简化计算机的硬件设备去做复杂中段的减法。
原码求补码
正整数的补码是其二进制表示,与原码相同。
例:+9的补码是00001001。(备注:这个+9的补码是用8位2进制来表示的,补码表示方式很多,还有16位二进制补码表示形式,以及32位二进制补码表示形式,64位进制补码表示形式等。每一种补码表示形式都只能表示有限的数字。)
求负整数的补码,将其原码除符号位外的所有位取反(0变1,1变0,符号位为1不变)后加1。
同一个数字在不同的补码表示形式中是不同的。比如-15的补码,在8位二进制中是11110001,然而在16位二进伏培码制补码表示中,就是1111111111110001。以下都使用8位2进制来表示。
以上内容参考:百度百科-补码
相同的,正数的原码=反码=补码。引进补码的作用是为了让计算机更方便做减法。
例如:按时间12个小时来算,现在的准确时间是4点,有一个表显示的是7点,如果要校准时间,我们可以将时针退7-4=3格,也可以向前拨12-3=9格,计算机做减法就可以转化成-3=+9,这样可以简化计算机的硬件设备睁凳弊去做复杂的减法。
然而得到补码的定义:正数时仍为正,而负数x求补要从2减去|x|。本就为了简化减法引进的补码,结果在求补的过程中还是出现减法。这样,再引进了反码表示法方便求补。补码反码就是为了简化减法而来的,将减号化为负数,再将负数化为补码求加法,跟正数没关系。所以不管是正整数还是正小数,原码,反码粗察,补码都全部相同。
原码是一种计算机中对数字的二进制定点的表示方法。原码是指一个二进制数左边加上符号位后所得到的码,且当二进制数大于0时,符号位为0;二进制数小于0时,符号位为1;二进制数等于0时,符号位可以为0或1。原码是有悉族符号数的最简单的编码方式,便于输入输出,但作为代码加减运算时较为复杂。数值位表示真值的绝对值。凡不足n-1位的,小数在最低位右边加零;整数则在最高位左边加零以补足n-1位。代码中的小数点”.”是在书写时为了清晰起见加上去的,在机器中并不出现。
补码在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。计算机中的符号数有三种表示方法,即原码、反码和补码。三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位,三种表示方法各不相同。对于计算机,其概念和方法完全一样。n位计算机,设n=8,所能表示的最大数是11111111,若再加1成为100000000(9位),但因只有8位,最高位1自然丢失。又回了00000000,所以8位二进制系统的模为2^8。在这样的系统中减法问题也可以化成加法问题,只需把减数用相应的补数表示就可以了。把补数用到计算机对数的处理上,就是补码。
反码是数值存储的一种,但是由于补码更能有效表现数字在计算机中的形式,所以多数计算机都不采用反码表示数。
难道,“原=反”?
这不奇前启怪吗?
不奇怪! 它们的语文,本来就不通。
----
同样,在 C 语言中,有这样的:“ i = i + 1;”。
这等式,在数学老师眼里,肯定是不成立的。
无论 i 是何值,这个“等式”,都不是等式。
由此可侍蠢知,计算机专业的数学,也是混乱的。
计算机专家的基础知识,都是跟什老悔陪么人学的呢?
不言而喻。
在计算机系统中,数值,一律采用补码表示和存储。
原码反码穗猜,在计算机中,都不存在。它们,也是没有任何用处的。
相同、或不相同,都没有任何意义。
补猜弊型码,其实就是一个“代替负数”的正数。
使用了补码之后,在计算机中,就没有负数了。
顺便,也就消除了减法运算。
所以,计算机只需要一个加法器,就可以走遍天下了。
---------------------
补码(即一个正数),怎么就能【代替负数】呢?
理论基础在于:计数系统的周期性。
比如,2 位 10 进制数(0~99),计数周期就是 10^2 = 100。
那么: 25 - 1 = 24
25 + 99 = (一百) 24
只要你:舍弃进位,仅保留 2 位数,99 就卜闹能代替-1。
同理,98 也能代替-2。
。。。
这些正数,就称为“负数的补数”。
变换公式: 负数的补数 = 负数 + 周期。
另外还有:
时针倒拨 3 小时、正拨 9 小时是等效的,周期是 12。
-π/2、+3π/2,正负两种角度,也等效,周期是 2π。
变换公式,都是一样的。
---------------------
计算机中,8 位 2 进制数,周期就是 2^8 = 256。
-1 的补码,就是:-1 + 256 = 255 = 1111 1111(二进制)。
-2 的补码,就是:254 = 1111 1110(二进制)。
。。。
求补码,不必经过“原码反码取反加一符号位不变”。
数学不好的老外,才需要弄哪些骚操作!
---------------------
只有负数,才需要变换成补码(正数)。
正数,不需要变换,也不允许变换,必须直接去相加运算。
所以,正数,它就没有补码。
有人说:正数的。。。都相同。
这就是被老外带到沟里去了。
原码反码,都是不存在的,哪还有什么相等!