C语言整数和浮点数在内存中的存储

目录

一.整数在内存中的存储

整数在内存中是以二进制的补码存储的
正整数的源码 反码 补码 都一样,首位的符号位为0
负整数的三种表示形式各不相同

负整数的符号位为1

源码:直接把二进制翻译过来

反码:符号位不变,其他位按位取反

补码:反码+1

补码找回源码也是取反,加一

二.浮点数在内存中的存储

浮点数V,S表示符号位,S为0,V为正数,S为1,V为负数 M为有效数字,M>=1&&M<2

E为指数位.

10进制的5.5的浮点数表示为:101.1,根据国际标准I E

EE为:(-1)^0 * 1.011 * 2^2,S=0,M=1.011,E=2

举个例子:

5.5是十进制,5可以表示二进制为101,0.5必须要用浮点数的表示形式为:

浮点数分为:32位和64位浮点数。 32位浮点数(float):第一位表示符号位S,接着的8位表示的指数位E,最后的23位表示的有效数字M

64位浮点数(double):第一位是符号位S,接着的11位是指数E,52位是有效数M

1.浮点数存的过程

存入内存中
对于M

根据IEEE对有效数字M和指数E有些特殊的规定 对于M,M的表示形式为:1.XXX,XXX为小数部分

比如:64位浮点数,M保存的时候可以把第一位的符号位省去,这样读取的时候可以把符号位加上去,这样就多了一位有效数字,64位的E就可以保存53位有效数字了
存的是小数点后面的数

对于E

E的值+中间值=存入内存中的值

32位浮点数的中间值为127

64位浮点数的中间值为1023

例如:2^5:的E为5,所以保存在内存中的值(float类型)为:5+127=132(10000100)

2.浮点数取的过程

从内存中取出来

浮点数的取可以分成三种情况:

1.E不全为0或E不全为1

E的值+中间值=存入内存中的值 M再加上首位(小数点前)的1

例如:

怎么存 :0.5的表示为:(-1)^0 * 1.0*2^-1, S = 0,M = 1.0,E = -1,-1 + 127 = 126

0 01111110 00000000000000000000000

怎么取: 存入内存中的值 = 126,- 中间值 = - 127,= E的值 -1 (-1)^ 0 * 1.0 * 2 ^ -1

2.E全为0

0 00000000 0010000000000000000000
E:1-127=-126 有效数字M不再加上1,而是为:0.XXX

(-1)^0 * 1.0 * 2 ^ -129 这样就表示-+0,表示很小的数

3.E全为1

0 11111111 00100000000000000000000 (-1)^ 0 * 1.0 * 2 ^ 253

如果M全为0,表示很大的数:正负无穷 (S表示正负号)

三.浮点数的例题

9.0的二进制为:1001.0 (-1) ^ 0 * 1.001 * 2 ^ 3
S = 0
M = 1.001
E = 3
在内存中(二进制)为:
0 10000010 001000000000000000000000

0 00000000 00000000000000000001001

9.0 整型以浮点型打印:0.000000是输出的十进制

拿到是M的值,前面加上0

9.0浮点型以整型打印

0 10000010 01100000000000000000000

会打印出很大的数

这个二进制码的整数,原反补码都相同

相关推荐
旺仔不是程序员2 分钟前
判断存在用 LIMIT 1:PostgreSQL 五种 count 计数方式与 NULL 语义
数据库·后端·sql
旺仔不是程序员3 分钟前
IN 操作规范:PostgreSQL 元素数量、EXISTS 替代与 = ANY 写法
数据库·后端·sql
这个DBA有点耶6 分钟前
异构数据集成方案:跨平台同步的完整指南与工具选型(含实测)
数据库·sql·程序人生·架构·数据库架构·dba
蓝速科技16 分钟前
会议室门牌显示模板选型与品牌视觉适配落地指南丨蓝速科技
大数据·运维·数据库·人工智能·科技
jaysee-sjc31 分钟前
【苍穹外卖】Day01:从零认识企业级项目开发
java·开发语言·数据库·mysql·spring·intellij-idea·mybatis
智购科技自动贩卖机31 分钟前
自动售货机嵌入式系统时钟同步与时间管理实战:从RTC校准到断网时间保持的工程实践
大数据·linux·数据库·人工智能·yolo
Y38153266232 分钟前
SEO 周报自动化:从采集数据到一页报告
数据库·搜索引擎
雨辰AI32 分钟前
多租户数据库资源配额管控|避免租户资源抢占雪崩(金仓 / 达梦 / 高斯 /openGauss 全库原生适配)
java·大数据·数据库·后端
ThornArmor35 分钟前
《向内深潜,向外飞掠》
c语言·开发语言·c++·vim·visual studio
吠品42 分钟前
Python 写入 Excel 的两种主流方案实际用法总结
c语言·开发语言·算法