原码,反码,补码,移码的关系

计算机组成原理 先占个大坑

数据格式分为:

一.定点格式,即约定机器中所有的数据的小数点的位置是固定不变的.
二.浮点格式,即小数点位置可变,表示范围较大

一.定点数:
用一个 n+1 位字来表示一个定点数 x ,其中一位 xn 表示符号位,其余位数表示量值.
当数据为纯小数时,小数点即在 xn xn1 之间的位置
当数据为纯整数是,小数点即在最末尾 x0
用数值 0 和 1 分别代表正号和负号
显然表示范围为
0|x|12n 右端点为各位均为 1 情况

二.浮点数:
浮点表示法:
任意一个二进制数

N=2E.M

其中 M 称为浮点数的尾数,是一个纯小数, e 是比例因子的指数,称为浮点数的指数,是一个整数, 2 称为基数

这里写图片描述
如上图所述,另外有IEEE754标准

规格化表示

由于一个数字可能有多个浮点数表示方法,所以需要有规格化表示:
即:
当尾数的值不为 0 时,尾数域的最高位应为 1
否则修改阶码同时左右移动小数点


数的机器码表示

介绍编码的几种表示方法:
原码,补码,反码,移码
同时真值机器码相对应
下面 x 均为真值

①原码

定点整数的原码表示法: xnxn1...x1x0
xn 符号位:0 代表正数, 1 代表负数

[x]={x,2n>x02nx=2n+|x|,0x2n

易得有+0 和-0两种表示方法
[+0]=0000...0
[0]=1111...1
但原码的加法运算复杂,不易于使用

②反码

包括符号位全部取反
很简单的先鸽了

③补码

补码表示法解决了原码的加法运算的不足
补码的思路可以借鉴钟表,取模运算
-3=+9(mod12)
因此很好理解

[x]={x,2n>x02n+1+x=2n+1|x|,0x2n

2n+1 相当于mod
补码→真值
x=2nxn+i=0n12ixi

式子中 xn 取负是因为 0 代表正, 1 代表负
0只有一种表示方法,即为均为 0

转化方法:

一个正整数,其原码,反码,补码表示法均相同,符号位为0
一个负整数,其符号位均为1,用二进制表示的数位值各不相同:
①原码符号位为1 不变,整数的每一位二进制数位求反得到反码
②反码符号位为1 不变,反码数值位最低位+1,得到补码


①除符号位外各位取反
②+1

④移码

移码通常用于表示浮点数的阶码,如IEEE754
移码的传统定义是:
[e]=2k+e,2k>e2k
其中,e为真值,2^k是固定偏移值常数.
表示方法:
e =-10101
[e] =0,01011
逗号不是小数点,而是区分出符号位.与原码,补码,反码不同,符号位0代表负数,1代表正数
数值位与上述几种相同

猜你喜欢

转载自blog.csdn.net/joovo/article/details/79736425