如何简单的辨别电脑大端存储还是小端存储

    说起大小端存储,大家一定很疑惑,这是什么东西,简单点说就是电脑在读机器语言的时候是先低位读,还是高位。如果这还不是很明了,那么我再举一个例子,对于32位操作系统,我们数据存储是32位的,数字1,在机器中存储的是0000....0001,前面31个0,后面一个1,那么你怎么能知道机器是先从高位读起,还是低位呢,有一个简单的方法,那就是你把数据的前8位截断不就可以了吗。一个int是4个字节,一个char是一个字节,用char去强制类型转换int型,就可以得到int数据类型的前八位了,是不是很神奇。
    下面我写了一段测试代码:
#include<iostream>
using namespace std;
int main()
{
	int arr[]={1,2,3,4,5};
	int c=(int)&arr+1;
	int a=*((long*)((int)&arr+1));
	cout<<*((char*)((int)&arr+1)) <<endl;
	system("pause");       
	return 0;
}

    上面先定义一个数组,5个大小,第二行的c是什么意思呢取地址数组名+1就是原数组的地址向后偏移一个字节的意思,第三行的a是取四位,和int一样,这里就不管它了,下面输出引用c地址,就是读取c地址的内容,输出的结果是2的25次方,这就说明我自己的电脑是小端存储。这里再解释下小端存储吧,
小端存储(Little Endian)。字节或 半字节的最低位字节(Lowest Significant Bit,LSB)存放于内存最高位字节地址上。即最低地址存放的最低字节,
2在前面24个0,0010,1在电脑中是前面24个0,0001。用char去截断,就得到数组中1的那24个0和2中的第一个字节也就是0010,排列起来就是2的25次方。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值