int32 float 在32位内存中内容和布局

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

这就是内存中的具体内容

原创文章 17 获赞 1 访问量 2047

猜你喜欢

转载自blog.csdn.net/opk8848/article/details/103240945
今日推荐