变量存储问题

 

整型变量

 

整型变量在内存中是以二进制补码的形式存储的,正数的补码与原码相同,负数的补码是其绝对值的二进制取反加1,不同的机器不同的编译系统为整型分配的位数也不同.

 

浮点型存储(这个以前一直不知道)

 

符号位

指数位

小数部

指数偏移

单精度

1(31)

8(30-23)

127

双精度

1(63)

11(62-52)

1023

 

 

存储是是按规范化形式,即小数点前只有一位非0的数,即最高位永远为1,所以存储时只有小数部,没有整数部.

指数部分 占用8-bit的二进制数,可表示数值范围为0255。 但是指数应可正可负,所以IEEE规定,此处算出的次方须减去127才是真正的指数。所以float的指数可从 -126128.而我们算内存中存储的指数时算出的指数也需要先加上127再变成二进制

因此0.75二进制存储为00111111 01000000 00000000 00000000

整型和浮点型存储都是低位占低位高位在高位

 

字符存储

内存中存储的是字符的ASCII,字符存储是高位在低位,低位在高位

 

结构体所占空间问题

结构体的存储与成员类型、成员数量、成员的定义的顺序有关,而且还存在对齐的问题,在vc下默认的对齐方式是自然对齐,即以结构体成员中size最大的成员作为基本分配单元。即总的结构体的大小必须为其倍数。在分配时Char

偏移量必须为sizeof(char)1的倍数

int

偏移量必须为sizeof(int)4的倍数

float

偏移量必须为sizeof(float)4的倍数

double

偏移量必须为sizeof(double)8的倍数

Short

偏移量必须为sizeof(short)2的倍数

若想改变这种情况则可加上#pragma packn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值