定义
IEEE754标准规定小数的表示形式为V=(-1)S*M*2E
S为符号位
M为尾数
E为阶码
一个单独的符号位编码S,符号位为0,表示正数,符号位为1表示负数。
k位的阶码字段exp=ek-1.....e0 编码阶码E。
n位小数字段frac=fn-1......f0 编码尾数M,但是编码出来的值也依赖于阶码字段的值是否等于0。
俩种浮点数
IEEE754定义了俩种浮点数,分为32位单精度浮点数,64位双精度浮点数。
32位精度浮点数使用 1 位表示符号位,8位表示阶码,23位表示尾数。
64位精度浮点数使用 1 位表示符号位,11位表示阶码,52位表示尾数。
4种表现形式
IEEE754将小数表示为4种形式,规格化小数,非规格化小数,无穷,NAN,以下使用单精度来说明
规格化小数 | s | 非0 非 255 | f |
非规格化小数 | s | 0 | f |
无穷 | s | 11111111 | 0 |
NAN | s | 11111111 | f |
具体表示
IEEE754 定义的小数表示为 V=(-1)S*M*2E 只要计算出M和E即可。
规格化小数
阶码计算方式:E=e-Bias,e=ek-1.....e0 ,Bias=2k-1 -1。
小数计算方式:小数字段等于0.fn-1......f0,尾数M=1+f,即尾数M默认以1开始。
非规格化小数
阶码计算方式:E=1-Bias,e=0,Bias=2k-1 -1。
小数计算方式:小数字段等于0.fn-1......f0。
特殊值
阶码全为1的是特殊值,当小数域全0时是无穷,s=1,表示负无穷,s=0表示正无穷。
阶码全为1,小数域不是全0时,表示NAN,即非数字,比如 无穷 - 无穷,根号负数。
以下使用8位表示浮点数。S=1,K=4,M=3,Bias=2k-1-1=7
描述 | 位表示 | 指数
|
小数
|
值
|
||||||||
0 最小的非规格化数 最大非规格化数 |
0 0000 000 0 0000 001 0 0000 010 0 0000 011 ....... 0 0000 111 |
0 -6 1/64 0 -6 1/64 0 -6 1/64 0 -6 1/64 0 -6 1/64 |
0/8 0/8 1/8 1/8 2/8 2/8 3/8 3/8 7/8 7/8 |
0/512 0 0 1/512 1/512 0.001953 2/512 1/256 0.003906 3/512 3/512 0.005859 7/512 7/512 0.013672 |
||||||||
最小的规格化数 |
0 0001 000 0 0001 001 .... 0 0110 110 0 0110 111 0 0111 000 0 0111 001 0 0111 010 ....... 0 1110 110 |
1 -6 1/64 1 -6 1/64 6 -1 1/2 6 -1 1/2 7 0 1 7 0 1 7 0 1 14 7 128 |
0/8 1/8 1/8 9/8 6/8 14/8 7/8 15/8 0 8/8 1/8 9/8 2/8 10/8 6/8 14/8 |
8/512 8/512 0.015625 9/512 9/512 0.017578 448/512 448/512 0.875 480/512 480/512 0.9375 512/512 512/512 1 576/512 576/512 1.125 640/512 640/512 1.25 224 224 224 |
||||||||
最大规格化数 |
0 1110 111 | 14 7 128 | 7/8 15/8 | 240 240 240 | ||||||||
无穷大 |
0 1111 000 |
原文地址:https://www.cnblogs.com/shuiyonglewodezzzzz/p/11062536.html