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
本文来自博客园,作者:想想就很离谱,转载请注明原文链接:https://www.cnblogs.com/lvvou/p/15044375.html