小数用二进制如何表示

将该数字乘以2,取出整数部分作为二进制表示的第1位;然后再将小数部分乘以2,将得到的整数部分作为二进制表示的第2位;以此类推,直到小数部分为0。

0.7 * 2 = 1.4 ——————- 1
0.4 * 2 = 0.8 ——————- 0
0.8 * 2 = 1.6 ——————- 1
0.6 * 2 = 1.2 ——————- 1
0.2 * 2 = 0.4 ——————- 0
0.4 * 2 = 0.8 ——————- 0
0.8 * 2 = 1.6 ——————- 1
0.6 * 2 = 1.2 ——————- 1
0.2 * 2 = 0.4 ——————- 0
…………
0. 7 10 = 0.1011 0 ˙ 0 ˙ 1 ˙ 1 ˙ 2 0.7_{10}=0.1 0 1 1 \dot 0 \dot 0 \dot 1 \dot 1_{2} 0.710=0.10110˙0˙1˙1˙2

浮点数在计算机中表示
计算机内存是有限的,也就是说无法准确的表示无理数以及无限循环小数(可以用分数的形式来表示).

浮点的意思是小数点的位置是可以变化的

I E E E 浮 点 标 准 用 V = ( − 1 ) s × M × 2 E , 表 示 一 个 数 IEEE浮点标准用 V = (-1)^s \times M \times 2^E,表示一个数 IEEEV=(1)s×M×2E

s:符号位
M:尾数
E:阶码
Bias:偏置值,用来计算阶码
B i a s = 2 e x p 位 数 − 1 − 1 Bias = 2^{exp位数 - 1} - 1 Bias=2exp11,下面例子 B i a s = 2 2 − 1 − 1 = 1 Bias = 2 ^{2-1} - 1=1 Bias=2211=1

假设浮点数只有5位(1位符号位,2位exp,2位尾数)

12345
s0000

第1位 为符号位, 0 表示 +, 1 表示 -
第2-3位 为exp
第4-5位 为尾数(这是实际的数据,位数越多,越精确,这是罪恶之源)

float ,32位, 由 1位符号位 8位exp 23位尾数 组成
2 23 = 8 , 388 , 608 2^{23} = 8,388,608 223=8,388,608,所以最多只能精确表示7位的十进制

double, 64位, 由1位符号位 11位exp 52位尾数 组成
2 52 = 4 , 503 , 599 , 627 , 370 , 496 2^{52} = 4,503,599,627,370,496 252=4,503,599,627,370,496,所以最多只能精确表示16位的十进制

1.非规格化: 阶码全0

12345
s00xx

E = 1 − B i a s E = 1 - Bias E=1Bias
只有小数

2.规格化: exp在 全0 与 全1 之间(不包括全0,1)
E = e − B i a s E = e - Bias E=eBias
隐含1

3.无穷大: exp全1,并且尾数全0

12345
s1100

4.NaN:exp全1,并且尾数不全是0

下面是浮点数的计算
e: exp 对应的数值(无符号数)
f:小数值

12345eE 2 E 2^E 2EfMV十进制
000000010000
00001001 1 4 \cfrac{1}{4} 41 1 4 \cfrac{1}{4} 41 1 4 \cfrac{1}{4} 410.25
00010001 1 2 \cfrac{1}{2} 21 1 2 \cfrac{1}{2} 21 1 2 \cfrac{1}{2} 210.5
00011001 3 4 \cfrac{3}{4} 43 3 4 \cfrac{3}{4} 43 3 4 \cfrac{3}{4} 430.75
001001010111
00101101 1 4 \cfrac{1}{4} 41 5 4 \cfrac{5}{4} 45 5 4 \cfrac{5}{4} 451.25

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值