2020/10/4剖析数据在内存中的存储

数据类型分为:
内置类型 自定义类型

一 常见的内置类型:

  • char //字符数据类型

  • short //短整形

  • int //整形

  • long //长整型

  • long long //长长整形

  • float //单精度整形

  • double //双精度整形

二 自定义类型

数组类型

结构体类型

枚举类型

联合类型

整形家族

char(一个字节,4bit)
unsigned char:无符号位,表示范围:0—255
signed char:最高位是符号位,1表示负数,0表示正数。可表示数字范围: -128—127

short(两个字节,8bit)
unsigned short [int]
​signed short [int]

int (四个字节,32bit)
​unsigned int
signed int

long (四个字节,32int)
unsigned long [int]
signed long [int]

浮点型家族

float:单精度浮点型

double:双精度浮点型

指针类型

int *pi

char *pc

float *pf

void *pv

空类型

void 表示空类型

整形在内存中的存储

整形分为有符号整形,无符号整形。

有符号整型分为正整形和负整形。

对于整形来说:数据在内存里是以补码形式存放(正整形和无符号整形原码反码补码相同)。

原码

直接将整形按照正负数形式翻译成二进制

反码

原码符号位不变,其他位依次按位取反(二进制最高位为符号位,0表示正数,1表示负数)

补码

反码+1得到补码

数据为什么在内存中以补码形式存储?原因在于使用补码可以将符号位和数值位统一处理进行存储。

我们虽然了解数据在内存中的存储形式,但字节实际存放在内存里的顺序有所不同

大端存储模式(大端字节序存储):数据低位保存在内存高地址中,数据的高位保存在低地址中。

小端存储模式(小端字节序存储):数据低位保存在内存低地址中,数据的高位保存在高地址中。
在这里插入图片描述

浮点型在内存中的存储

根据IEEE754,任何二进制浮点数都可以表示成如下形式:

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

  • (-1)^S表示符号位,S=0表示正数,S=1表示负数

  • M表示有效数字,在[1,2)区间内

  • 2^E是指数位

    IEEE 754规定:单精度,双精度浮点数在内存中存储模型如下:
    在这里插入图片描述

    举个例子:十进制的5.5,写成二进制为101.1,相当于1.011 * 2^2.按照上边格式就是 S=0, M=1.011, E=2。

    对于有效数字M和指数部分E还有具体规定。https://baike.baidu.com/item/IEEE%20754/3869922?fr=aladdin

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值