C语言深度解剖之数据在内存的存储

    • 数据类型

1.整型

(1)short

(2)int

(3)long

(4)long long

(5)char

2.浮点型

(1)float

(2)double

3.构造类型:

(1)数组类型

(2)结构体类型

(3)枚举类型

(4)联合类型

4.指针类型

(1)整形指针

(2)浮点型指针

(3)函数指针

(4)数组指针

(5)构造类型指针

..........

(6)void型指针(可以指向任意类型)

5.空类型:

void 表示空类型

    • 整型在内存的存储

(1)原码反码补码

正数的原反补码相同

负数的原反补码各不相同

如下:

int在32位的编译器中-1的存储方式

10000000000000000000000000000001//原码(第一个1表示符号位,表示负数)

11111111111111111111111111111110//反码(第一个1是符号位不变,剩下的1变0,0变1)

11111111111111111111111111111111//补码(反码加1)

举例: int在32位的编译器中-10的存储方式

10000000000000000000000000001010

11111111111111111111111111110101

11111111111111111111111111110110

这里是32个比特位,在内存中以16进制显示,一个16进制占4个比特位,32个比特位也就是8个16进制位

1111 1111 1111 1111 1111 1111 1111 0110

f f f f f f f 6

ff ff ff f6

这里的计算顺序与箭头指向的内存顺序不同,但了解大小端之后你就会有所明白

(2)大小端的介绍

小端(存储)模式

是指数据的低位保存在内存的低地址中,而数据的高位,,保存在内存的高地址中。

大端(存储)模式

是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;

注意:这是小端存储在调试内存中以16进制来显示(0x表示16进制),

0x006FF714表示一个字节,不要因为是小段存储误以为这个字节存储方式是10,

    • 浮点型在内存的存储

浮点型与整数型不同

根据国际标准IEEE(电气和电子工程协会) 754,任意一个二进制浮点数V可以表示成下面的形式:

(-1)^S * M * 2^E

(-1)^S表示符号位,当S=0,V为正数;当S=1,V为负数。

M表示有效数字,大于等于1,小于2。

2^E表示指数位。

S与E

S代表这个数是否为正负:(-1)^s这里的S表示正数为0表示负数为1

在内存中在32(1+8+23)位的浮点数:这里的E是((-1)^S * M * 2^E中的E加上127的结果

在内存的64(1+11+52)位的浮点数:这里的E是((-1)^S * M * 2^E中的E加上1023的结果

这里的E为

M

M与E息息相关有三种情况

E不全等于0且不全等于1

(这里的E是指加上127之后的E)

举例:

float a=9.0转成二进制为

1001.0

=(-1)^ 0 * 1.001 * 2 ^ 3

S=0 M=1.001 E=3

0 1000 0010 00100000000000000000000

在内存中 这里的 M是去除小数点之前的1--->.001,将第一位的1舍去以后,等于M可以保存24位有效数字

E全等于0

有效数字M不再加上第一位的1,而是还原为0.xxxxxx的小数,接近于0的很小的数字。

这时,浮点数的指数E等于1-127(或者1-1023)

举例如下:

int a =9(这是整数9以浮点型存储方式)

0 00000000 000000000000000000010001

S=0 M=0.000000000000000000010001 E=-126

(-1)^S*0.000000000000000000010001 *2^-126

E全等于1

有效数字M全为0表示无限大

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值