数据在内存中的存储

##数据在内存中的存储
···
Debug版本下
数组在栈区中的存储
···
Release版本下
在这里插入图片描述
由调试结果可以看出,Realse版本下会对代码进行优化,i的地址位于数组地址的地位,并且紧挨数组元素存储。
···
数据类型分为:
1.内置类型
几种基本的内置类型
占内存空间大小(单位:字节)
char 字符数据类型 1个字节
short 短整型 2
int 整形 4
long 长整型 4
long long 更长整形 8
float 单精度浮点数 4
double 双精度浮点数 8
2.自定义类型
构造类型:
数组类型
结构体类型struct
枚举类型 enum
联合类型union
···
整数在内存中的存储,最高位表示符号位:最高位0表示整数,最高位1表示负数
原码表示方式:直接将数表示位二进制的形式
反码:原码的符号位不变,其他位依次按位取反
补码:反码加1
signed表示有符号的,unsigned表示无符号的
正数的原、反、补码都相同
对于整形来说:数据存放内存中其实存放的是补码
在这里插入图片描述
unsigned int i;则i恒大于0;则程序结果为死循环
在这里插入图片描述
strlen是统计字符串的长度,遇到’\0’结束,’\0’的ASCII值是0;
当a下标为255时数组元素内容是’\0’;
-1
原码:1000 0000 0000 0000 0000 0000 0000 0001
反码:1111 1111 1111 1111 1111 1111 1111 1110
补码 1111 1111 1111 1111 1111 1111 1111 1111
-255
原码:1000 0000 0000 0000 0000 0000 1111 1111
反码: 1111 1111 1111 1111 1111 1111 0000 0000
补码: 1111 1111 1111 1111 1111 1111 0000 0001
(-1)+(-255)
a为char,则i为255时,-1-i=>’\0’
1111 1111
0000 0001

在这里插入图片描述
unsigned char i;i的范围为0-255,i<=-255恒成立,因此程序死循环打印"hello world"

字节序问题
大端字节序:数据低位保存在内存的高地址,高位保存在内存的低地址上
小端字节序:数据低位保存在内存的低地址,高位保存在内存的高地址上
一台机器大端还是小端,取决于具体的cpu
判断字节序代码:
在这里插入图片描述

浮点数在内存中的存储
blog.csdnimg.cn/2020092911005795.png#pic_center)
在这里插入图片描述

在表示符号这里插入图片描述
表示符号位,当s=0时,v为正数,s=1时,v为负数
M表示有效数字
E表示指数
对于32位浮点数,最高位是符号位S,接着8位是指数E,剩下32位是有效数字M;
对于64位浮点数,最高位是符号位S,接着11位是指数E,剩下52位是有效数字M;
M是大于等于1小于等于2的,可以写为1.xxxxxxx;M在保存时,只保存小数点后面的部分;
E不全为0或不全为1时:
E为8位时,E+127;
E为11位时,E+1023;
E全为0时,
E为8位时,E-127;
E为11位时,E-1023;
E全为1时
M全为0;表示加减无穷大;
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值