C/C++ 内存存放数据之大端模式和小端模式以及验证方式

前言

假设有个数字1234,然后它怎么读数呢?

其中4是个位,3是十位,2是百位,1是千位。

也就是4是最低位,1是最高位。

也就是最左边是最高位,最右边是最低位。

回到主题,声明一个变量

int a = 0x12345678

因一个字节是8位,所以

12是一个字节。

34是一个字节。

56是一个字节。

78是一个字节。

所以字节序是:12是高字节,78是低字节。

假设有以下一段内存

先看大端小端的定义:

大端模式:是指数据的高字节保存在内存的低地址中,低字节保存在内存的高地址端。

小端模式:是指数据的高字节保存在内存的高地址中,低字节保存在内存的低地址端。

看完有点懵,我也是。看图

大端模式

小端模式

测试

测试自己电脑是大端存储方式还是小端存储方式。

测试代码

#include <iostream>
using namespace std;

int main(int argc, char **argv)
{
	int a = 0x12345678;

	const char *p = (char*)(&a);

	if (*p == 0x12)
	{
		cout << "大端模式" << endl;
	}
	else if (*p == 0x78)
	{
		cout << "小端模式" << endl;
	}

	return 0;
}

调试结果

结束

另外:大端模式存储方式跟字符串是一样的。

string str = "12345678";
int a = 0x12345678;

---End

posted @ 2021-07-22 15:27  想想就很离谱  阅读(427)  评论(0编辑  收藏  举报