小数用二进制如何表示

将该数字乘以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.710=0.10110˙0˙1˙1˙20.7_{10}=0.1 0 1 1 \dot 0 \dot 0 \dot 1 \dot 1_{2}0.710=0.10110˙0˙1˙1˙2

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

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

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

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

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

12345
s0000

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

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

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

1.非规格化: 阶码全0

12345
s00xx

E=1−BiasE = 1 - BiasE=1Bias
只有小数

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

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

12345
s1100

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

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

12345eE2E2^E2EfMV十进制
000000010000
0000100114\cfrac{1}{4}4114\cfrac{1}{4}4114\cfrac{1}{4}410.25
0001000112\cfrac{1}{2}2112\cfrac{1}{2}2112\cfrac{1}{2}210.5
0001100134\cfrac{3}{4}4334\cfrac{3}{4}4334\cfrac{3}{4}430.75
001001010111
0010110114\cfrac{1}{4}4154\cfrac{5}{4}4554\cfrac{5}{4}451.25

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值