整形储存续:
关于strlen函数的补充:
![]()

分析:strlen函数的返回类型为size_t,而 size_t是unsinged int类型。
@ 浮点储存
1.1浮点数储存的初步了解
浮点数表示的范围:float.h

分析:9以整数存储的方式存,而*pFloat以浮点存储的方式拿出来
结果说明:整型和浮点型在储存和获取值的时候方法是不一样的
若以浮点型的方式存和取,则结果正确
1.2浮点数储存规则

例:
V=5.0f转化为二进制就是101.0
根据IEEE规定

单精度浮点数储存模型

双精度浮点数储存模型
IEEE754对有效数字M和指数E,还有一些特殊的规定:
M:
- 按照之前的规则,有效数字 M 的范围是 1≤M<2,所以 M 可以表示为 “1.xxxxxx” 的形式(xxxxxx 是小数部分)。
- IEEE 754 规定:计算机存储 M 时,默认其第一位固定是 1,因此会省略这个 “1”,只保存后面的小数部分。比如要存 1.01,只存 “01”,读取时再把开头的 “1” 补回去。
- 这么做是为了节省 1 位有效数字:以 32 位浮点数为例,原本 M 只有 23 位存储空间,省略第一位的 “1” 后,实际相当于能保存 2以float f=5.5为例:以float f=5.5为例:
E:
指数 E 在存储时是一个无符号整数:
- 若 E 占 8 位,取值范围是 0~255;若占 11 位,取值范围是 0~2047。
- 但科学计数法的指数可以是负数,因此 IEEE 754 规定:存储 E 时要加上一个 “中间数”——8 位 E 的中间数是 127,11 位 E 的中间数是 1023。
- 以V=0.5为例:

- 举例:比如 2¹⁰的指数实际是 10,存为 32 位浮点数(E 占 8 位)时,要计算 10+127=137,再把 137 转成二进制(10001001)存入内存。
将浮点数放入:
以float f=5.5为例:

将浮点数取出:
1.E不全为0或E不全为1:(最常见)

2.E全为0:
当指数 E 的真实值为 “1-127”=-126(对应 8 位 E 的情况)或 “1-1023”=-1022(对应 11 位 E 的情况)时,有效数字 M 的处理方式会改变 —— 不再补回开头的 “1”,而是直接还原成 “0.xxxxxx” 形式的小数。
这么设计的目的,是为了表示 ±0,以及那些接近 0 的极小数字。
3.E全为1:
这时,如果有效数字M全为0表示(+-)无穷大。
)&spm=1001.2101.3001.5002&articleId=155892747&d=1&t=3&u=9f257c7ee12848a58881beb79b7854a0)
1882

被折叠的 条评论
为什么被折叠?



