数据格式
在计算机中常用的数据表示格式有两种:定点格式和浮点格式
定点格式容许的数值范围有限,要求的处理硬件比较简单
浮点格式容许的数值范围很大,要求的处理硬件比较复杂
定点数
定点格式:即约定机器中所有数据的小数点位置是固定不变的,小数点也不再用记号“.”来表示,通常将数据表示成纯小数或纯整数。
假设用一个n+1位字来表示一个定点数x,其中一位Xn用来表示数的符号,并用****数值0和1分别代表正号和负号,其余位数代表它的量值。这样,对任意定点数X=XnXn-1······X1X0,在定点机中可表示为如下形式:
Xn | Xn-1 Xn-2 ······X1 X0 |
---|---|
符号 | 量值(尾数) |
X表示纯小数:
- 小数点位于Xn和Xn-1之间;
- 当XnXn-1······X1X0各位均为0,数X的绝对值最小,为|X|min=0;
- 当XnXn-1······X1X0各位均为1,数X的绝对值最大,为|X|max=1-2-n;
- 数的表示范围为0<=|X|<=1-2-n
X表示纯整数:
- 小数点位于X0之后;
- 当XnXn-1······X1X0各位均为0,数X的绝对值最小,为|X|min=0;
- 当XnXn-1······X1X0各位均为1,数X的绝对值最大,为|X|max=2n-1;
- 数的表示范围为0<=|X|<=2n-1
浮点数
浮点表示法:把一个数的有效数字和数的范围在计算机的一个存储单元中分别予以表示,这种把数的范围和精度分别表示的方法,相当于数的小数点位置随比例因子的不同而在一定范围内可以自由浮动。
在计算机中,一个任意二进制数N可以写成
N=2e·M
在计算机中,机器浮点数由阶码和位数及符号位组成:
Es | Em-1······E1E0 | Ms | Mn-1······M1M0 |
---|---|---|---|
阶符 | 阶码 | 数符 | 尾数 |
- M称为浮点数的尾数,是一个纯小数,尾数部分的有效数字的位数决定了浮点数的精度;
- e是比例因子的指数,称为浮点数的指数,也称为阶码,是一个整数。阶码指明了小数点在数据中的位置,决定了浮点数的表示范围;
原码
若定点整数的原码形式为XnXn-1······X1X0(Xn为符号位),即将数用二进制数表现,则原码表示的定义是:
- 当2n>X>=0时,[X]原=X;
- 当0>=X>-2n时,[X]原=2n+|X|;
原码表示形式:
- 若为正数,则[X]原=0Xn-1······X1X0,
- 若为负数,则[X]原=1Xn-1······X1X0,
- 若为0,则[+0]原=00·····00 和 [-0]原=10·····00
补码
对于定点整数,补码形式为XnXn-1······X1X0(Xn为符号位),则补码表示的定义是
- 当2n>X>=0时,[X]原=X;
- 当0>=X>-2n时,[X]原=2n+1-|X|;
补码的表示方法:
- 对于正数,符号位为0,补码=原码;
- 对于负数,符号位为1不变,整数的每一位二进制数位求反得到反码,反码符号位为1不变,反码数值位最低位加1,得到补码;
反码
对于定点整数,反码形式为XnXn-1······X1X0(Xn为符号位),则反码表示的定义是
- 当2n>X>=0时,[X]原=X;
- 当0>=X>-2n时,[X]原=2n+1-|X|-1;
反码的表示方法: - 对于正数,符号位为0,反码=原码;
- 对于负数,符号位为1不变,整数的每一位二进制数位求反得到反码;
浮点数的机器表示
由于早期计算机系统的浮点数采用不同的机器码表示阶和尾数,造成数据的交换十分麻烦,因此当前计算机均采用统一的IEEE754标准中的格式表示浮点数。
IEEE754中的32位短浮点数:
S | E | M |
---|
31 30 23 22 0
在32位的浮点数中
- S是浮点数的符号位,占1位,安排在最高位,S=0代表正数,S=1代表负数;
- M是尾数,放在低位部分,占用23位,小数点位置放在尾数域最左有效位的右边;
- E是阶码,占用8位,阶码采用隐含方式,即E=e+127;
在IEEE754标准中,一个规格化32位浮点数X的真值表示为
X=(-1)S ✖(1.M)✖2E-127
IEEE754中的64位短浮点数:
S | E | M |
---|
63 62 52 51 0
在64位的浮点数中
- S是浮点数的符号位,占1位,安排在最高位,S=0代表正数,S=1代表负数;
- M是尾数,放在低位部分,占用52位,小数点位置放在尾数域最左有效位的右边;
- E是阶码,占用11位,阶码采用隐含方式,即E=e+127;
在IEEE754标准中,一个规格化32位浮点数X的真值表示为
X=(-1)S ✖(1.M)✖2E-10232