IEEE754标准浮点数的转换
IEEE754标准浮点数的转换支持小数点的进制转换器
对于⼀个⼗进制的的数字,当我们需要转化为浮点数时需要按照⼀定的规则,⽽IEEE754是现在应⽤⽐较⼴泛的⼀种标准,下⾯是关于该标准的⼀些转化规则。
浮点数表⽰的格式:
单精度:总位数(32位)= 符号位(1)+阶码位即指数位(8)+ 尾数位(23);指数偏移量+127
双精度:总位数(64位)= 符号位(1)+阶码位即指数位(11)+ 尾数位(52);指数偏移量+1023
按照IEEE754的标准,被编码的值分为3种情况:规格化的值,⾮规格化的值,特殊值
1、规格化的值:当阶码(指数部分)的⼆进制值不全为0也不全为1时,所表⽰的值为规格化的值。
如:131.0625这个数字即为规格化的值,这个数字转化时我们需要⾸先将其变化为⼆进制⼩数点前为10000011;⼩数点后为0001,也就是说(176.0625)10 = (10000011.0001)2
//括号后⾯的数字表⽰这个数是⼏进制
IEEE754约定⼩数点左边隐含有⼀位,通常这位数是1 所以接下来我们需要按照科学计数法的思想将其转化:10000011.0001 =
1.00000110001*2^7
注意:IEEE754约定单精度指数偏移量为127,所以我们表⽰阶码也就是后⾯的指数的时候需要对7加上127,即后⾯的阶码为134 =(10000110)2
将上⾯的全部结合起来可以得到:0(符号位,正数)+10000110(阶码位,共8位)+00000110001000000000000(尾数位,共23位,在上⾯计算出来的数的基础上往后补0即可)=01000011000000110001000000000000(把176.0625按照IEEE标准转化后的结果)。
2、⾮规格化的值:当阶码部分的⼆进制全为0时,所表⽰的数是⾮规格化的。
这种时候指数的真值为1-偏移量(单精度-126,双精度-1022),尾数的值就是⼆进制形式对应的⼩数,不包含隐含的1。
⾮规格化数⼀般表⽰数值0,或者表⽰⾮常接近0的数。
规格化表⽰下,必须使尾数⼤于等于1,所以⽆法表⽰0,注意+0.0与-0.0是不相同的
3、特殊值:**当阶码部分⼆进制全部为1时表⽰特殊的值。
尾数部分全部为0时表⽰⽆穷⼤,符号位为0时,为+∞,符号位为1时表⽰-∞。当尾数部分不全为0时,为“NaN”,即不是⼀个数。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。