目录

文章目录

  • 目录
  • 大端、小端
  • 区分方式 1
  • 区分方式 2

大端、小端

大端:高位字节放在内存的低地址端,低位字节放在内存的高地址端,CPU 对操作数的存放方式从高字节到低字节。

小端:低位字节放在内存的低地址端,高位字节放在内存的高地址端,CPU 对操作数的存放方式从低字节到高字节。

假设我们的内存是这样的:

我们要存一个数据 0x44332211 到这块内存里面去如果系统是 小端模式 的话,存储方式如下图:

如果系统是 大端模式 的话,存储方式如下图:

区分方式 1

通过判断内存的低地址是否为 1 来区分大小端:指针类型转换,将长度大的 int 类型转换为长度小的 char 类型,最后再取 char* 指针的值,就知道数据 1 存放在高端地址还是低端地址了。

#include <stdio.h>int main()
{int i = 1;(*(char*)&i == 1) ? printf("Little-endian\n") : printf("Big-endian\n");return 0;
}

区分方式 2

利用共用体的特点:使用长度最大的那个数据类型作为共用体的大小。所以,char a 使用的是 int b 的空间大小,判断 a 的值,也就是判断低地址的数据值。

#include <stdio.h>union System {char a;int b;
};int main()
{union System s;s.b = 1;printf("0x%x\n", &s.a);printf("0x%x\n", &s.b);if (s.a == 1) {printf("Little-endian\n");} else {printf("Big-endian\n");}return 0;
}

C 语言编程 — 大小端区分相关推荐

  1. C语言程序设计 | 大小端

    目录 一.什么是大小端 什么是大小端: 为什么会有大小端: 二.如何确定大小端 两种不同的求大小端的方式 常见的求大小端错误的方式: 一.什么是大小端 假如定义一个 int 类型的变量 a,让 a = ...

  2. 网络编程大小端字节序

    刚接触网络编程那会因为是同一种语言之间做数据交互所以并没有出现大小端问题,到后来鄙人因机缘巧合进入物联网行业然后就发现打开了新世界.(设备终端大多是嵌入式设备用的C,服务端用的是java) 然后我的状 ...

  3. C语言验证大小端的几个方法

    大小端的问题在很多面试笔试中都会遇到,最直接的考察是,笔试的时候,让你写一个代码,如何确定当前系统是大端还是小端的. 什么是大端和小端呢? 大端: 高位字节排放在内存的低地址端,低位字节排放在内存的高 ...

  4. 网络编程大小端的注意事项

    1.一个字节的数据无需注意大小端的问题 2. 首先判断主机平台的大小端的问题,才能决定是否使用网络字节序的转换

  5. mysql 大小端_go语言中大小端模式的个人理解

    大端模式:是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据 当作字符串的存储顺序处理.地址由小向大增加,而数据从高位往低位放:这和我们的阅读习 ...

  6. 【C语言】大小端字节序判断 常见笔试题型

    [前言]大家好,我是Catzzz666,一个一心让大家变强的博主.废话不说,让我们进入今天的正题. 大小端的引入: 我们先来看这样一段代码: 在内存中我们创建了局部变量a,那么a在内存中又是如何存储的 ...

  7. C语言实现大小端数据转换

    由于处理器不同以及数据存储方式的不同,造成了再不同平台下数据存在大小端存储的问题. 为了保持数据的一致性就要去数据在平台传输.转换过程中要保持相同的大小端数据格式. 常用的有16位.32位数据大小端数 ...

  8. C语言查看大小端(纯代码)

    法一:直接在主函数中实现 int check() {int a = 1;char* p = (char*)&a;if (*p == 1){return 1;//小端}else{return 0 ...

  9. 大小端存储模式的理解和判断

    在计算机系统中,存储是以字节为单位的,每个地址单元都对应着一个字节,一个字节=8bit.在C语言中除了8bit的char之外,还有16bit的short型,32bit的long型(要看具体的编译器). ...

最新文章

  1. c语言实验报告管理系统,C语言实验报告-学生信息资管理系统.doc
  2. 【组合数学】排列组合 ( 排列组合示例 )
  3. C++ Primer 5th笔记(chap 16 模板和泛型编程)类型无关和模板编译
  4. 探索式软件测试—Exploratory Software Testing
  5. python读取只读word只读_人生苦短我学Python——Word处理之快速Word转PDF
  6. 三面美团Java岗,面试竟然被这31道Java基础题难倒了
  7. 动态内存的分配用法和构造动态一维数组
  8. jQuery如何退出each循环的?
  9. Python300篇电子书
  10. 好用的BUS调试工具-Bus Hound
  11. VS2013 应用程序无法正常启动0xc0150002
  12. 【语义分割系列:八】Segmentation 数据集 介绍下载论文
  13. 模型预测控制(MPC)解析(六):有约束的MPC简介
  14. MySQL下载、安装(这里是免装版)、配置与删除
  15. springAOP支持的通知类型
  16. conda search cuda后没有版本10的问题
  17. 药店管理系统源码 药店管理信息系统源码带文档
  18. 上海疫情后一个前端的面试心路历程
  19. 计算机系统——汇编语言基础
  20. Photoshopcs6 自学笔记二 图像处理

热门文章

  1. 计算机电缆怎么做耐压试验,ZGF直流高压发生器进行电缆耐压试验的6个步骤
  2. alpine安装启动mysql_在php5-fpm-alpine docker容器中安装php-gd依赖于alpine linux
  3. eeglab中文教程系列(3)-绘制通道光谱图
  4. 基于Android移动终端的微型餐饮管理系统的设计与实现2-侧滑菜单
  5. linux nfs 读写性能,linux – Debian上的NFS性能问题
  6. 太炸了!SpaceX迎来20岁生日,马斯克收到一份特殊礼物
  7. 韦布望远镜睁眼看到第一缕星光,镜面校准进行时
  8. 新型内存攻击,专治制程提高的芯片
  9. 华为云中文预训练模型发布:全球最大、千亿参数,逼近人类神经元
  10. LeCun之后Jeff Dean离奇躺枪,哥大黑人女博士:你们得引用我!