数据表示

各种数值在计算机中表示的形式称为机器数,其特点是采用二进制计数值,数的符号用0和1表示,小数点则隐含,表示不占位置。机器数对应的实际数值称为数的真值。

原码

若机器字长n等于8

[+1]原=0 0000001[-1]原=1 0000001
[+127]原=0 1111111[-127]原=1 1111111
[+45]原=0 0101101[-45]原=1 0101101
[+0.5]原=0 <>1000000[-0.5]原=1 <>1000000
[+0]原=0 0000000[-0]原=1 0000000

小数的二进制算法:

例如:0.375

0.375X2=0.75\rightarrow0

0.75X2=1.5\rightarrow1

0.5X2=1\rightarrow1

所以,0.375的二进制为011

反码

[+1]反=0 0000001[-1]反=1 1111110
[+127]反=0 1111111[-127]反=1 0000000
[+45]反=0 0101101[-45]反=1010010
[+0.5]反=0 <>1000000[-0.5]反=1 <>0111111
[+0]反=0 0000000[-0]反=1 1111111

0表示正号,1表示负号,正数的反码与原码相同,负数的反码则是其绝对值求反。 

补码

[+1]补=0 0000001[-1]补=1 1111111
[+127]补=0 1111111[-127]补=1 0000001
[+45]补=0 0101101[-45]补=1 1010011
[+0.5]补=0 <>1000000[-0.5]补=1 <>1000000
[+0]补=0 0000000[-0]补=0 0000000 

0表示正号,1表示负号,正数的补码与其反码和原码相同,负数的补码则等于其反码的末位加1。

移码

[+1]移=1 0000001[-1]移=0 1111111
[+127]移=1 1111111[-127]移=0 0000001
[+45]移=0101101[-45]移=0 1010011
[+0.5]移=1 <>1000000[-0.5]移=0 <>1000000
[+0]移=1 0000000[-0]移=1 0000000 

只要将补码的符号位取反便可获得相应的移码表示。 


定点数:小数点不动的数。

浮点数

当机器字长为n时,定点数的补码和移码可表示2^{n}个数。

阶符阶码数符尾数

任意一个十进制浮点数N可以写成

N=10^{E}xM

任意一个R进制浮点数N可以写成

N=R^{E}xM

任意一个二进制浮点数N可以写成

N=2^{E}xM

IEEE 754标准

注意:

  • 阶码是用移码表示的,这里会有一个127的偏移量,它的127相当于0,小于127时为负,大于127时为正,
    • 比如:10000001表示指数为129-127=2,表示真值为2^2,而01111110则表示2^(-1).
  • 尾数全都是小数点后面的数,
  • 但尾数中省略了一个1,因此尾数全为0时,也是1.0...00;

真值公式

单精度:single,32位

x=(-1)^{s}x(1.M)x2^{E-127}         e=E-127

双精度:double,64位

x=(-1)^{s}x(1.M)x2^{E-1023}         e=E-1023

对于IBM-PC而言,单精度浮点数是32位(即4字节)的,双精度浮点数是64位(即8字节)的。两者的S,P,M所占的位数以及表示方法由下表可知

SEM表示公式偏移量
1823x=(-1)^{s}x(1.M)x2^{E-127}127
11152x=(-1)^{s}x(1.M)x2^{E-1023} 1023

例子:123.456

二进制:N(2)= 1111011. 01110100101111001,向右移6位,得

                N(2)=1.11101101110100101111001x2^6          即 e=6,E=6+127=133

符号位(s)阶码(E)尾数(M)
01000010111101101110100101111001

浮点数的运算

X=Mx2^{i}       Y=Nx2^{j} 

  1. 对阶:K=|i-j|,把阶码小的数的尾数右移K位,使其阶码加上K。
  2. 求尾数和(差)
  3. 结果规格化并判溢出
  4. 舍入处理
  5. 溢出判别
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值