int32 float 在c++中同样都是32位,但是存储结构完全不同。
int32 先不说
float是这样表达的。关键词IEEE 754
float在内存中 分三部分 s+e+m
s 1位 0代表正数 1 负数
e 8位 代表 移多少位
m 23位 是小数的具体数字 (24位最高位总为1,所以丢弃不存)
举例 45.25 转换到二进制
分两部分45 和 0.25
45二进制0010 1101
0.655二进制0.01
合在一起0010 1101.01
左移5位 才能达到第一位为1 变成1.0110101 * 2^5
这个时候 m大概出来了 e和5 有关系 s和正负有关系
继续
1.0110101 去掉1 之后 0110101 补充0到23位 为 01101010000000000000000
正数所以s是0
e 左移动5位 5+127 = 132 如果是右移是-5+127 二进制是 10000100
三部分和一块 0 10000100 01101010000000000000000
这就是内存中的具体内容