当前位置: 首页 > news >正文

如何判断机器是大端字节序还是小端字节序

大小端字节序的定义

  • 大端字节序:是指一个整数的高位字节(23~31 bit)存储在内存的低地址处,低位字节(0~7 bit)存储在内存的高地址处。
  • 小端字节序:是指整数的高位字节存储在内存的高地址处,而低位字节则存储在内存的低地址处。

如何检测自己的电脑是大端字节序还是小端字节序

  1. 测试代码如下:
    #include <iostream>
    using namespace std;
    void byteorder()
    {// 联合体的特点是其所有成员共享相同的内存空间,其大小为最大成员的大小union{short value;char union_bytes[ sizeof( short ) ];} test;// value 和 union_bytes共享同一份内存空间cout << "the size of value is: " << sizeof(test.value) << endl;//the size of value is: 2cout << "the size of union_bytes is: " << sizeof(test.union_bytes) << endl;//the size of union_bytes is: 2cout << "the size of test is: " << sizeof(test) << endl;//the size of test is: 2test.value = 0x0102;//0x0102--->1 0000 0100// 无论大端字节序还是小端字节序,test.union_bytes[ 0 ]都表示联合体的第一个字节,也就是前八个比特位if (  ( test.union_bytes[ 0 ] == 1 ) && ( test.union_bytes[ 1 ] == 2 ) ){cout << "big endian" << endl;}else if ( ( test.union_bytes[ 0 ] == 2 ) && ( test.union_bytes[ 1 ] == 1 ) ){cout << "little endian" << endl;}else{cout << "unknown..." << endl;		}
    }int main()
    {byteorder();return 0;
    }

    大家可以运行一下,目前主流机器是小端字节序。

  2. 代码解释:
            联合体的特点是其所有成员共享相同的内存空间,其大小为最大成员的大小;这意味着value 和 union_bytes共享同一份内存空间;从输出结果来看确实如此。
            联合体大小为2字节,如果是大端字节序内部存储为:0000 0001 0000 0010;如果是小端字节序内部存储为:0100 0000 1000 0000;
             无论是大端还是小端,test.union_bytes[ 0 ]都表示联合体第一个字节,test.union_bytes[ 1 ]表示联合体第二个字节。
             最终按照大小端逻辑比较即可。

        

相关文章:

  • 【高等数学】(2)函数
  • Python基于SVM技术的手写数字识别问题项目实战
  • MyBatis实战项目测试
  • 本人精通各种语言输出hello world
  • 机电工程常用设备
  • Asp.net core 使用EntityFrame Work
  • 振动力学:有阻尼单自由度系统(简谐力激励的受迫振动)
  • 从汇编的角度揭秘C++引用,豁然开朗
  • 【吾爱】逆向实战crackme160破解记录(三)
  • Generate Permutation
  • ALLEN BRADLEY特价型号1715-OB8DE 模块
  • Make All Equal
  • 灵活运用 NextJS 服务端组件与客户端组件
  • 远程终端登录和桌面访问(嵌入式开发)
  • 网络安全基础--第十天
  • 第十一章 注解
  • 【文献精读】Explaining grokking through circuit efficiency
  • 传输层协议:网络通信的关键纽带
  • Matlab自学笔记五十七:符号运算、可变精度运算、双精度浮点型运算,三种运算精度的概念、比较、选择和应用
  • 主线程极致优化:让CPU“零闲置“的实战方案
  • 陕西省工程建设交易服务中心网站/千锋教育出来好找工作吗
  • 廊坊网站建设/网页设计是干嘛的
  • 谁用fun域名做网站了/东莞百度推广排名优化
  • 杭州网站建设培训班/怎样在百度上发表文章
  • 做网站代理好吗/百度一下你就知道官网网页
  • 水果网站建设策划书/百度怎么发布广告