栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

计算机中的大小端问题

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

计算机中的大小端问题

所谓的大小端问题指的是计算机加载数据是内存实际存储顺序和数据本身的“高/低位”顺序是否一致的问题;当数据长度大于1时才有大小端的讨论意义;

在C语言(32位机)中short占2个字节,那么当我们定义一个short型(0x1234)的变量时就会向图1中的字节1和字节2写入两个字节;这时就有两种可能的情况:
1)字节1存储“0x12”,字节2存储“0x34”;【大端模式】
2)字节1存储“0x34”,字节2存储“0x12”;【小端模式】
如下图:

那么如何判断呢?这里我们很自然地就想到如果我们读到低地址的数据看他返回的是“0x12”还是“0x34”就可以得出相应的结论;
如下图:

那么此时我们就要用到一种特殊的数据结构——联合体【因为ch和sh占有相同的起始地址】;
代码如下:

#include 

typedef union{
	short sh;
	char ch;
}EndianTest;
int main()
{
	EndianTest testUnion;
	testUnion.sh = 0x1234;
	if(testUnion.ch == 0x34) {
		printf("Little-Endian.n");
	} else {	
		printf("Big-Endian.n");
	}
	
	return 0;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/396494.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号