笔记:数据在内存中的存储及大小端知识

 一、整形在内存中的存储(以Visual Studio为例)

1.1 正数在内存中的存储

int a = 10; int b = 0x1234;(16进制显示)

--------------------------------------------------------------------------------

a的值为 10;其二进制为1010;十六进制为A

a为int整形,占用4个字节,即32位;

在计算机眼里 10是00000000 00000000 00000000 00001010;

十六进制显示 是00 00 00 0a。

编译器内存显示如下:

---------------------------------------------------------------------------------

b的值为11064;其二进制为0001001000110100;十六进制为 1234

在计算机眼里 b是 00000000 00000000 00010010 00110100

十六进制显示是 00 00 12 34。

编译器内存显示如下:

---------------------------------------------------------------------------------

编译器内存中显示为 0a 00 00 00 !(就好比一千二百三十四1234,显示为 4321)

编译器内存显示的是地址低位在前,高位在后;与我们习惯的阅读顺序相反。

如果其存储的规则与我们阅读顺序一致,即 数据的低位保存在内存的低地址中,而数据的高位,,保存在内存的高地址中,又称为小端存储!

反之,数据的高位保存在内存的低地址中,而数据的低位保存在内存的高地址中,称为大端存储。

举例1:

unsigned int a= 0x1234;
unsigned char b = *(unsigned char *)&a;

小端 b的值为 0x34 ;大端b的值为0x00!

举例2

union Un{

int a;

char b;

}Un;

Un un;

un.a = 1; 

return un.b; 

小端 un.b = 1;大端 un.b = 0;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值