原码、补码、反码之间是怎样转换的?
2022-09-28 · 百度认证:北京惠企网络技术有限公司官方账号
一、正整数的原码、反码、补码完全一样,即符号位固定为0,数值位相同。
二、负整数的符号位固定为1,由原码变为补码时,规则如下:
1、原码符号位1不变,整数的每一位二进制数位求反,得到反码。
2、反码符号位1不变,反码数值位最低位加1,得到补码。
方法:
(1)正整数的原码,反码和补码计算。【符号位为0,原码=反码=补码】
(2)负整数的原码,反码和补码计算,先求原码,再求反码,最后求补码。
(3)根据补码求真值,一般使用图中的公式计算,正整数符号为+,负整数符号为-,通常完成补码求真后,可以按步骤1、2简单的逆推一下,看结果是否正确。
扩展资料:
补码的表示方法:
模的概念:把一个计量单位称之为模或模数。例如,时钟是以12 进制进行计数循环的,即以12为模。在时钟上,时针加上(正拨)12的整数位或减去(反拨)12的整数位,时针的位置不变。14点钟在舍去模12后,成为(下午)2点钟(14=14-12=2)。
从0点出发逆时针拨10格即减去10小时,也可看成从0点出发顺时针拨2格(加上2小时),即2点(0-10=-10=-10+12=2)。因此,在模12的前提下,-10可映射为+2。由此可见,对于一个模数为12的循环系统来说,加2和减10的效果是一样的。
因此,在以12为模的系统中,凡是减10的运算都可以用加2来代替,这就把减法问题转化成加法问题了(注:计算机的硬件结构中只有加法器,所以大部分的运算都必须最终转换为加法)。10和2对模12而言互为 补数。
同理,计算机的运算部件与寄存器都有一定字长的限制(假设字长为8),因此它的运算也是一种模运算。当计数器计满8位也就是256个数后会产生溢出,又从头开始计数。产生溢出的量就是计数器的模,显然,8位 二进制数,它的模数为2^8=256。在计算中,两个互补的数称为“补码”。
计算机系统中,并没有原码和反码。
不存在的东西,哪有什么可转换的呢?
在计算机中,使用的是二进制。
八个二进制位,称为一个字节。
计数范围是:0000 0000~1111 1111。
对应十进制:0 ~ 255,共有 256 个数字。
计数周期是:2^8 = 256。
在计算机中,并没有负数。
所以,计算机中这些数字,都属于自然数,即“零和正数”。
但是,实际上,正数,也能当负数用的。
你看 2 位 10 进制数的计算:
25 - 1 = 24
25 + 99 = (一百) 24
如果,你不舍弃进位,结果就 124,+99 还是 99。
如果,你舍弃了超出 2 位数的进位,+99 就相当于-1 。
这时的正数,就称为“负数的补数”。
算法是:补数=负数+周期 (10^n),n 是补数的位数。
-------------------------
同理,在计算机中,255 = 1111 1111,就相当于-1。
示例: 0000 0001 = 1
+ 1111 1111 = 255
--------------
(1) 0000 0000 = 0
如果舍弃了进位 1,这算式,就是:+1 -1 = 0。
如果保留进位,这就是: 1 + 255 = 256。
-------------------------
那么,254 = 1111 1110,就相当于-2。
。。。
只要你舍弃进位,这些正数,就可以代表负数,参加运算。
这些正数,就称为:负数的补码。
补码 = 负数 + 周期(2^n),n 是补码的位数。
-------------------------
利用补码,可以把减法,转换成加法运算。
从而,就能简化计算机的硬件。
原码和反码,都没有这种功能。
所以,在计算机中,并没有原码和反码。
符号位原码反码取反加一,这些,都是“鸡肋”。
学习这堆垃圾,花费时间不少,还是弄不懂“补码的意义”。
老外数学不好,也就只能整这些骚操作了。
正负数,可以和补码,直接进行互相转换。
你只需掌握:正负数与补码的互转,就完事大吉了!
原码反码,都是用不着的。
原码反码,也都是不存在的。
原码反码,都是计算机老师忽悠学生的,你就不要上当了。