什么是反码?

电脑教程012

什么是反码?,第1张

什么是反码?

反码是数值存储的一种,多应用于系统环境设置,如linux平台的目录和文件的默认权限的设置umask,就是使用反码原理。在计算机内,定点数有3种表示法:原码、反码和补码。

概述

在计算机内,有符号数有3种表示法:原码、反码和补码。几种表示法关系密不可分。

原码

原码是计算机机器数中最简单的一种形式,数值位就是真值的绝对值,符号位位“0”时表示正数,符号位为“1”时表示负数,原码又称带符号的绝对值。为了方便整数和小数区别,整数的符号位与数值位之间用“,”隔开,小数的符号位与数值位之间用“.”隔开。

根据2个定义可以看出,原码的整数和小数中“0”的表示形式各有2种,“+0”和“-0”不一样,以8位机器数为例,整数的“+0”原码为0,0000000;整数的“-0”原码为1,0000000小数的“+0”原码为0.0000000,小数的“-0”原码为1.0000000。满足条件的数,带入定义里面计算机,主要机器数位,直接计算得到。

反码

反码通常是用来由原码求补码或者由补码求原码的过渡码。整数的反码定义如图1中图3整数反码定义,小数的定义如图1中图4小数反码定义。

根据定义,可以得到机器数的反码的整数和小数中“0”的表示形式各有2种,“+0”和“-0”不一样,以8位机器数为例,整数的“+0”原码为0,0000000,反码为0,0000000;整数的“-0”原码为1,0000000,反码为1,1111111;小数的“+0”原码为0.0000000,反码为0.0000000;小数的“-0”原码为1.0000000,小数的“-0”反码为1.1111111。

反码跟原码是正数时,一样;负数时,反码就是原码符号位除外,其他位按位取反。

补码

补码是计算机把减法运算转化为加法运算的关键编码,整数的补码码定义如图2中图5整数补码定义,小数的定义如图2中图6小数补码码定义。

根据2个定义可以看出,补码的整数和小数中“0”的表示形式各只有1种,“+0”和“-0”一样,以8位机器数为例,整数的“+0”和“-0”补码为0,0000000;小数的“+0”和“-0”补码为0.0000000。

因为根据定义x为“-0”,以8位机器数为例,为负数求补码,根据公式得2^8+(-0),即100000000+(-0),机器数位8位,所以为00000000,跟“+0”得到的补码一样。1,0000000补码,表示的数位-128。补码有下面2个性质,根据这2个性质可以把减法转化为加法来着。

移码

计算机中如何判断一个数是否为“机器零”有两条件,分别为当浮点数尾数为0时,不论其阶码为何值按机器零处理;另外,当浮点数阶码等于或小于它所表示的最小数时,不论尾数为何值,按机器零处理。阶码都是整数,为了机器好判断设置了移码。

以阶码为5位,尾数为11位的浮点数为例。当阶码和尾数都用补码表示时,机器零为×,××××;0.00000000000或者1,0000;×.××××××××××阶码用补码表示;如果阶码用移码表示,则为0,0000;×.××××××××××;全为机器零;即0,0000;0.0000000000,无论是阶码或者尾数全为“0”时,该数位机器零;有利于机器中“判0”电路的实现。

以上内容参考百度百科-反码

反码补码原码怎么转换,来看看方法吧。

1、首先原始代码的最高位是符号位,0表示正,1表示负,中间值表示数字的绝对值。

2、符号的反转,正数符号的反转与原符号相同,负数的补数是该符号的最低有效位数加上1。

3、补数,正数的补数与原代码相同,负数的补数在其倒数第一的基础上加1。零分为+0和-0。 进行不同符号的加法或同一符号的减法时,不能直接进行加法或减法,不能直接给出正负的结果。

4、必须先取绝对值,然后再加上减法。 符号比特由较大的绝对值决定,因此出现了转码。 反码是对原始代码的改进。补码在针对加减运算和正负零的问题上都解决了,平时用的最多的也就是补码。

哪有什么原码、反码!

在计算机中,只使用补码来存放正负数。

计算机中,以八个二进制位,作为一个字节。

数字 0,其补码就是 0000 0000。

正数,依次递增,即可。

负数,就是依次递减。

数字 +1,其补码就是 0000 0001。

数字 +2,其补码就是 0000 0010。

。。。

数字-1,就是 0000 0000-1 = 1111 1111。

数字-2,就是 1111 1111-1 = 1111 1110。

。。。

----

归纳:

正数的补码,就是:数字本身。

负数的补码,就是:0 + 该负数。

----

比如:

+ 9 的补码是:0000 1001。

-9 的补码就是:0000 0000-0000 1001=1111 0111。

求补码的计算过程,并不需要原码反码。

----

有了补码,就可以用加法,代替减法运算了。

比如:

 (+2)-(+1) = +1。

计算机计算如下:

 0000 0010 + 1111 1111= 0000 0001。