背景
- 大端
是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中
int data = 0x12345678;
// 0x12 是高字节,若它在内存的低地址中,则这个机器就是大端模式
- 小端
是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中
int data = 0x12345678;
// 若 0x12(高字节) 在内存的高地址中,则这个机器就是小端模式
实现
指针法和共用体法均可实现。
#include <iostream>
/*
* Author:dw
* Description: 判断机器的大小端
* Date: 2021-02-03 14:30:31 Wednesday
* FileName: checkCpu.cpp
* Location: D:\VSCODE_CPP\algorithm\checkCpu.cpp
*/
using namespace std;
//指针方法
void CheckCpuOne() {
int data = 0x12345678;
char *tmp = (char *)&data;
if (tmp[0] == 0x78) {
cout << "small endian!" << endl; // 低地址存低字节,高地址存高字节
} else {
cout << "big endian!" << endl; // 低地址存高字节,高地址存低字节
}
return;
}
//共用体方法
void CheckCpuTwo() {
union {
int a;
char b;
} un;
un.a = 0x12345678;
if(un.b == 0x78){
cout << "small endian!" << endl; // 低地址存低字节,高地址存高字节
}
else{
cout << "big endian!" << endl; // 低地址存高字节,高地址存低字节
}
return;
}
int main(int argc,char *argv[]){
// CheckCpuOne();
CheckCpuTwo();
return 0;
}
笔者的电脑是小端模式。
粗缯大布裹生涯,腹有诗书气自华。
修改于:2022.3.3