算术之浮点数及原码、反码、补码的计算

浮点数全解

e70085d6e54a4fa4bfb87ffe6a23be4e.png

每种表示形式不止一种,因此制定一个标准规范:

IEE754标准

NaN(not a number):非数,即该标准不能表示的数

结构:符号位+指数+尾数

符号位:0表示正数,1为负数;

指数:偏置方式表示,即真正的指数加上一个偏置值作为该位取值;

尾数:规格化尾数最高位必须为1;即取值范围

:1.000...00~1.111...11之间;

由于小数部分第一位必须为1,所以没有必要保存该1,直接取值小数部分即可;

32位单精度浮点数偏置值为127

4f5e58510ec04b6baf12371b3ffaa1ae.png2f947d49a23345468600eaf47e197ea9.png

指数位位数:

单精度浮点数(64):8位

双精度浮点数(64位):11位

四精度浮点数(128):15位

浮点数的运算:

相加:

c244c08ca3ab4bc58f00c80297a87dfb.png

1.

原码

6ffdba85f7494504b61c06610a26e58c.png小数原码

72f3835413e24799a2ad9ba27a8ab962.png

x=0时,

[+0.0000]的原码为0.0000;

[-0.0000]的原码为1-0.0000=1.0000;

补码

1.补数

为了·实现加法器计算减法

找到一个正数代替负数实现减法运算

对其取模(即边界)得到;

在时钟转一圈计时中,选择12为模;

15点和3点均显示3点;

15%12=3;

%为取模运算符;

这样-3和+9对时钟效果相同,都回到了同一位置;

称-3是+9以12为模的补数

结论:(1).负数可以用它正补数代替

(2).一个数绝对值和他补数的绝对值和为模数;

2.一个数x的补码,n为位数:

(1)整数:

2^n>x>=0:0,x;(符号位,数值位)

0>x>=-2^n:-1,2^(n+1)+x;

例如x=-1101时;

2^5-1101=0011;

表示为:-1,0011;

(2)小数:

1>x>=0:x;

0>x>=-1:2+x;

以负数为例,x=-0.0110时,

2+x=10.0000(2的二进制表示)-0.0110=1.1010

根据补码推导原数:

当0>x>=-1:2+x时;

此时补码范围2>x>=1;

即对于小数的补码,若2>x>=1,则逆向,即减去2得到原数;

若补码为1.0101;

对于0

[+0.0000]的补码=0.0000

[-0.0000]的补码=2+(-0.0000)=10.0000-0.0000=0.0000

补码中0只有一种形式;

3.反码

整数x的反码定义:

当2^n>x>=0时;

为0,x;

当0>=x>-2^n时,

为2^(n+1)-1+x

例如x为-1101时,为(2^5-1)+x=11111-1101=1,0010

小数x的反码定义:

当1>x>=0时,为x;

当0>=x>-1时,为(2-2^(-n))+x;

其中n为小数位数

例如x=-0.0110时,反码为(2-2^(-4))+x=1.1111-0.0110=1.1001;

x=0时;

[+0.0000]的反码=0.0000;

[-0.0000]的反码=(10.0000-0.0001)-0.0000=1.1111;

可见反码的0有两种形式;

判断大于1,即1.0101-10.0000=-0.1011;

 

  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值