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

C语言:判断大端小端

代码实现:

第一种:
​
int main() {int a = 1;char* p = (char*) & a;//char* -- 访问一个字节(第一个地址)if (*p == 1){printf("小端\n");}else{printf("大端\n");}return 0;
}​

代码解析:

  1. 定义整型变量 a 并赋值为 1。
  2. 将整型变量 a 的地址强制转换为字符指针 p。在32位系统中,一个整型变量占用4个字节,因此 p 现在指向 a 的第一个字节。
  3. 判断 *p 是否等于1。如果等于1,则说明计算机是小端模式;否则则是大端模式。

第二种:

// 定义一个名为 chaeck_sys 的函数,用于检测系统的小端/大端属性。
int chaeck_sys() {int a = 1; // 定义一个整型变量 a,并将其初始化为 1。char* p = (char*)&a; // 将整型变量 a 的地址强制转换为字符指针 p。// 检查 *p 是否等于 1。如果是,则说明计算机是小端模式;否则则是大端模式。if (*p == 1) {return 1;} else {return 0;}
}int main() {// 调用 chaeck_sys 函数并获取返回值。int ret = chaeck_sys();// 根据返回值输出结果。if (ret == 1) {printf("小端\n");} else {printf("大端\n");}return 0;
}

代码解析:注释写的很清楚

第二种优化:

// 定义一个名为 chaeck_sys 的函数,用于检测系统的小端/大端属性。
int chaeck_sys() {int a = 1; // 定义一个整型变量 a,并将其初始化为 1。return *(int*)&a; // 将整型变量 a 的地址强制转换为整型指针并返回它的值。
}int main() {// 调用 chaeck_sys 函数并获取返回值。int ret = chaeck_sys();// 根据返回值输出结果。if (ret == 1) {printf("小端\n");} else {printf("大端\n");}return 0;
}

大端和小端的存储方式:

  • 在小端模式下,数值的低位字节存储在内存的低地址处,高位字节存储在高地址处。
  • 在大端模式下,数值的高位字节存储在内存的低地址处,低位字节存储在高地址处。

这个程序利用了这样一个事实:当我们将一个整数赋值给一个变量时,该整数的所有字节都会被存储到该变量所占的内存空间中。然后通过检查这些字节在内存中的顺序,我们可以确定计算机使用的是哪种字节序。

相关文章:

  • 以太网协议与DNS
  • 【基于Flask、MySQL和Echarts的热门游戏数据可视化平台设计与实现】
  • List 接口
  • Socks5与代理IP技术探析:构建安全高效的网络通信
  • 算法训练营Day15(二叉树)
  • 【噪音控制 】 铁氧体磁珠
  • 多项式回归
  • CMMI评估认证,引领行业潮流!
  • 如何在社交场合中应对发作性睡病的影响?
  • 学习笔记 -- CAN系统基础
  • 【AI底层逻辑】——“数学华尔兹”之一元线性回归
  • 漏洞复现-iDocview某接口存在任意文件读取漏洞(附漏洞检测脚本)
  • Hasura GraphQL Engine 远程命令执行漏洞复现 [附POC]
  • thinkphp 中 关联查询 like 查询失效
  • C 语言 xml 库的使用
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • [笔记] php常见简单功能及函数
  • [译]如何构建服务器端web组件,为何要构建?
  • Android框架之Volley
  • Electron入门介绍
  • JavaScript 基本功--面试宝典
  • javascript数组去重/查找/插入/删除
  • Java知识点总结(JavaIO-打印流)
  • Laravel5.4 Queues队列学习
  • mysql外键的使用
  • SpiderData 2019年2月16日 DApp数据排行榜
  • SpiderData 2019年2月25日 DApp数据排行榜
  • 对超线程几个不同角度的解释
  • 二维平面内的碰撞检测【一】
  • 复杂数据处理
  • 聊聊hikari连接池的leakDetectionThreshold
  • 爬虫模拟登陆 SegmentFault
  • 前端性能优化--懒加载和预加载
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 系统认识JavaScript正则表达式
  • 由插件封装引出的一丢丢思考
  • (23)Linux的软硬连接
  • (python)数据结构---字典
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (数据结构)顺序表的定义
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • .Net IE10 _doPostBack 未定义
  • .NET 的静态构造函数是否线程安全?答案是肯定的!
  • .NET/C# 使窗口永不获得焦点
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)
  • [1204 寻找子串位置] 解题报告
  • [2]十道算法题【Java实现】
  • [4.9福建四校联考]
  • [ai笔记3] ai春晚观后感-谈谈ai与艺术
  • [BUUCTF]-Reverse:reverse3解析
  • [C++]类和对象【上篇】