c语言中大小端字节序和字节序判断

当我们了解了整数在内存中的存储后,我们调试看一个细节:

//整形占用四个字节,就是看字节在存储的位置的高低

什么是大小端?

其实超过一个字节的数据在内存中存储的时候,就有存储顺序的问题,按照不同的存储顺序,我们分为大端字节序存储和小端字节序存储。

大端(存储)模式:

是指数据的低地位内容保存在内存的高地位地址,而数据的高位字节内容,保存在内容的低地址位

小端(存储)模式:

是指数据的低地位字节内容保存在内存的低地址处,而数据的高位字节内容,保存在内存的高地址

例如:设计一个小程序来判断当前机器的字节序

cs 复制代码
#include<stdio.h>
int main()
{
	int a = 1;
	if(*(char*)&a == 1)
	{
		printf("小端\n");
	 } 
	 else
	 {
	 	printf("大端\n");
	 }
	return 0;
 } 
cs 复制代码
#include<stdio.h>
int check_sys()
{
	int a=1;
	return *(char*)&a;//返回第一个字节,如果是1就返回1,是0就返回0 
}
int main()
{
	if(check_sys() == 1)
	{
		printf("小端\n");//说明第一个字节是1 
	 } 
	 else
	 {
	 	printf("大端\n");//说明最后一个字节是1 
	 }
	return 0;
 } 

//X86环境 小端字节序,%x是以16进制的形式进行打印

cs 复制代码
#include<stdio.h>
//X86环境 小端字节序 
int main()
{
	int a[4]={1,2,3,4};
	int *ptr1 = (int*)(&a+1);
	int *ptr2 = (int*)((int)a + 1);
	printf("%x,%x",ptr1[-1],*ptr2);
	return 0; 
 } 
 //4 20000000 
相关推荐
楼田莉子10 分钟前
同步/异步日志系统:日志器管理器模块\全局接口\性能测试
linux·服务器·开发语言·c++·后端·设计模式
故事和你9113 分钟前
洛谷-数据结构-1-3-集合3
数据结构·c++·算法·leetcode·贪心算法·动态规划·图论
春栀怡铃声21 分钟前
【C++修仙录02】筑基篇:类和对象(上)
开发语言·c++·算法
ulias21235 分钟前
leetcode热题 - 3
c++·算法·leetcode·职场和发展
大彼方..1 小时前
深入学习cpp初阶模板
开发语言·c++·学习
实心儿儿1 小时前
Linux —— 进程概念 - 程序地址空间
linux·运维·算法
菜鸟丁小真1 小时前
LeetCode hot100-287.寻找重复数和994.腐烂的橘子
数据结构·算法·leetcode·知识点总结
老四啊laosi1 小时前
[C++进阶] 25. C++11新特性(一)
c++·c++11·右值
零号全栈寒江独钓1 小时前
基于c/c++实现linux/windows跨平台ntp时间戳服务器
linux·c语言·c++·windows
发发就是发1 小时前
USB系统架构概述:从一次诡异的枚举失败说起
驱动开发·单片机·嵌入式硬件·算法·fpga开发