数据在内存的存储方式

一,基本数据类型

——系统内置类型
char  //字符型  1字节
short //短整型  2字节
int   //整型    4字节
long int //长整型  4/8字节
long long int //长长整型  8字节
float    //单精度浮点型   4字节
double   //双精度浮点型   8字节

具体数值范围:

1.1整型的基本归类

  char  //字符类型在存储的时候是以ASCⅡ码存储
  unsigned char   signed char
  short
  unsigned short  signed short
  int
  unsigned int    signed int
  long
  unsigned long   signed long

1.2浮点数

  float
  double

1.3构造  //又称自定义类型

数组类型  
结构体类型  struct
枚举类型    enum
联合类型    union

1.4指针类型

结构体指针
函数指针
数组指针
......

二,数据在内存的存储

2.1原码,反码,补码

计算机中整型有三种二进制存储形式,即原码,反码,补码。三者均有“符号位”“数值位”,

正数符号位为“0”,复数符号位为“1”。

正数存储为原码,负数存储为补码

原码:整型数据的二进制表示即为原码

反码:根据原码,除符号位以外的数值依次取反

补码:反码+1

在内存的体现

&a&b

为方便表示数据,vs此处显示的是16进制。

a为正数,在内存中的原反补相同

->二进制:0000  0000  0000  0000  0000  0000  0000  0011   

->十六进制: 0  0  0  0  0  0  0  3

b为负数,存储方式为补码

原:1000  0000  0000  0000  0000  0000  0000  0010 

反:1111   1111   1111   1111   1111   1111   1111  1101

补:1111   1111   1111   1111   1111   1111   1111  1110

->十六进制:f  f  f  f  f  f  f  e

如上图所示

但是,为何顺序是颠倒的?这牵扯到编译器大小端问题。

2.2什么是大小端

大端存储:意指数据的低位存储到内存的高位上,数据高位存储到内存的低位上

小端存储:意指数据的低位存储到内存的低位上,数据高位存储到内存的高位上

内存存储位序为

低--------------------------------------------》高

上图的   03  00  00  00 即为低至高

易知此设备为小端存储。

代码检测设备的大小端

如下代码检测设备大小端

上图代码解析

 i  的十六进制为:00  00  00  01

大端: 00  00  00  01

小端: 01  00  00  00

将其&(取地址)获得它的首位地址

后强制类型转换为  char*  ,因char为1字节,所以解引用后只能取到1字节位的数。

若取出为1,即为小端,取出为0,即为大端。

该方法利用了联合的特性,逻辑与上相同。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值