IEEE浮点表示法

目录:
 1、简介
 2、float规格
 3、转换例子

内容:

 1、简介
 目前已知的C/C++编译器都是按照IEEE(国际电子电器工程师协会)制定的IEEE浮点数表示法来进行运算的。
 这种结构是一种科学表示法,用符号(+或-)、指数和尾数来表示,底数被确定为2。
 所以在IEEE浮点数表示法里,一个浮点数为尾数乘以2的指数次方再加上符号。

 2、float规格
 float 共计32位,4字节
 由最高到最低位分别是第31、30、29、……、0位,则:
 31位是符号位,1表示该数为负,0反之。
 30-23位,一共8位是指数位。
 22-0位,一共23位是尾数位。

 3、转换例子
 按照IEEE浮点数表示法,将float型浮点数12345.0f转换为二进制。
 处理不带小数的浮点数时,直接将整数部转化为二进制表示:1 11100010 01000000 也可以这样表示:11110001001000000.0
 然后将小数点向左移,一直移到离最高位只有1位:1.11100010010000000 共左移了16位,
 所以原数就等于:1.11100010010000000 * ( 2^16 )。可知尾数为1.11100010010000000,指数为16。

 显而易见,最高位永远是1,所以这个1没有必要保留。
 这样尾数的二进制就变成了:11100010010000000
 最后在尾数的后面补0,一直到补够23位:11100010010000000000000

 来看指数,一共8位,可以表示范围是0 - 255的无符号整数,也可以表示-128 - 127的有符号整数。
 因为指数是可以为负的,为了统一把十进制的整数化为二进制时,都先加上127。
 这里,我们的16加上127后就变成了143,二进制表示为:10001111
 12345.0f这个数是正的,所以符号位是0,那么我们按照前面讲的格式把它拼起来:
 0  10001111 11100010010000000000000
 符号 指数  尾数
 即:01000111 11110001 00100000 00000000

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值