float在内存中的存放
一个float型实数在内存中占4个字节,即32个二进制bit,从低位到高位依次叫第0位到第31位.这32位可以分为3个部分:符号位(第31位),阶码(第30位到第23位共8位),尾数(最低23位)。
1、符号位。最高位也就是第31位表示这个实数是正数还是负数,为0表示正数或0,为1表示负数.
2、阶码。第30位到第23位这8个二进制位表示该实数转化为规格化的二进制实数后的指数与127(127即所谓偏移量)之和即所谓阶码.
规格化的二进制实数的指数只能在-127----+127之间,所以,一个float型数的最大值在+2^127即+3.4*10^38,最小值在-2^127即-3.4*10^38.
3、尾数。其他最低的23位即第22位到第0位表示该实数转化为规格化的二进制实数后小数点以后的其余各位即所谓尾数.
例如,将十进制178.125表示成机器内的32个字节的二进制形式.
第一步:将128.125表示成二进制数:(178.125)(十进制数)=(10110010.001)(二进制形式);
第二步:将二进制形式的浮点实数转化为规格化的形式:(小数点向左移动7个二进制位可以得到)
10110010.001=1.0110010001*2^7 因而产生了以下三项:
符号位:该数为正数,故第31位为0,占一个二进制位.
阶码:指数为7,故其阶码为127+7=134=(10000110)(二进制),占从第30到第23共8个二进制位.
尾数为小数点后的部分, 即0110010001.因为尾数共23个二进制位,在后面补13个0,即01100100010000000000000
所以,178.125在内存中的实际表示方式为:
0 10000110 01100100010000000000000
最新文章
- web应用中使用JavaMail发送邮件 。。转载
- ";我爱记单词";测试报告兼功能展示
- bzoj-3170 3170: [Tjoi 2013]松鼠聚会(计算几何)
- java之javadoc命令
- Eclipse对svn操作切换账号或更换svn地址方法
- Content-Disposition的使用方法
- 网站通常使用一些javascript包裹 简化电话
- TI C66x DSP 系统events及其应用 - 5.8(ISTP)
- C语言库函数大全及应用实例八
- CodeForces 618B Guess the Permutation
- Linux必知必会的目录与启动过程
- 3_使用指针对象(Using Object Pointer)
- OpenCV——去雾
- What Your Computer Does While You Wait.CPU的等待有多久?
- Effective Modern C++翻译(2)-条款1:明白模板类型推导
- 企业日志大数据分析系统ELK+KAFKA实现【转】
- unity发射弓箭轨迹的实现
- hdu 3599(最短路+最大流)
- C#多线程学习(四) 多线程的自动管理(线程池)
- Shiro - 自定义filterChainDefinitions和Realm