完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
1. 内存中的浮点数
l 浮点数在内存的存储方式为:符号位,指数,尾数 l float与double 类型的数据在计算机内部的表示法是相同的,但是由于所占用的存储空间的不同,其分别能够表示的数值范围和精度也不同 l 浮点数的转换 A. 将浮点数转换为二进制 B. 用科学计数法表示二进制浮点数 C. 计算指数偏移后的值 l 示例:对于指数6,偏移后的值如下: float:127 + 6 -->133 double:1023+ 6 -->1029 l 注意:计算指数时需要加上偏移量,而偏移量的值和类型有关,float偏移127,double偏移1023 3. 进制浮点数的内存表示l 实数8.25的内存中的float表示 A. 8.25的二进制:1000.01-->1.00001*(2^3) B. 符号位:0 (正数) C. 指数:127 + 3 -->130 -->10000010 D. 小数:00001 8.25的flaot类型表示:0 10000010 00001000000000000000000 符号位(1位) 指数位(8位) 尾数(23位) 16进制形式 0 10000010 00001000000000000000000 --> 0x41040000 4. 用程序验证l 8.25在内存中的float表示的16进制形式 int test1() { float f = 8.25; unsigned int *p = (unsigned int*)&f; printf("p=%#x", *p); return 0; } 5. 有趣的问题l int 类型的范围:[-2^31,(2^31)-1] l flaot类型的范围:[-3.4*10^38,3.4*10^38] l 思考:int和float都占用4个字节的内存,为什么float却比int的范围大得多呢? 6. 浮点数的秘密l float能表示的具体数字的个数与int相同 l float可表示的数字之间不是连续的,存在间隙 l float只是一种近似的表示法,不能作为精确数使用 l 由于内存表示法相对复杂,float的运算速度比int慢得多 l 注意:double与float具有相同的内存表示法,因此double也是不精确的,由于double占用的内存较多,所能表示的精度比flaot高。 7. 浮点数是不精确的int test2() { float f = 3.14159; float f2 = 123456789; printf("f=%.10fn",f); //3.1415901184 printf("f=%.10fn", f2);//123456792.0000000000 return 0; } 8. 小结l 浮点类型与整数类型的内存表示法不同 l 浮点类型的内存表示更复杂 l 浮点类型可以表示的范围更大 l 浮点类型是一种不精确的类型 l 浮点类型是运算速度较慢 |
|
相关推荐 |
|
你正在撰写讨论
如果你是对讨论或其他讨论精选点评或询问,请使用“评论”功能。
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-TF卡烧录流程之烧写过程
706 浏览 0 评论
1042 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-mfgtools烧录流程之烧写原理
1087 浏览 0 评论
请问SPH0641LU4H这款麦克风如何在不使用I2S的情况下,单纯通过GPIO来进行驱动且正常读取数据呢
795 浏览 1 评论
497 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12094 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-2 01:50 , Processed in 0.555941 second(s), Total 49, Slave 38 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号