首先要知道什么大端小端:

大端(存储)模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址 中; 小端(存储)模式,是指数据的低位保存在内存的低地址中,而数据的高位,,保存在内存的高地 址中。

为什么有大端和小端:

为什么会有大小端模式之分呢?这是因为在计算机系统中,我们是以字节为单位的,每个地址单元 都对应着一个字节,一个字节为8 比特位,但是在C语言中除了8 bit的char之外,还有16 bit的short型,32 bit的long型(要看具体的编 译器),另外,对于位数大于8位 的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在着一个如 何将多个字节安排的问题。因此就 导致了大端存储模式和小端存储模式。 例如:一个 16bit 的 short 型 x ,在内存中的地址为 0x0010 , x 的值为 0x1122 ,那么 0x11 为 高字节, 0x22 为低字节。对于大端 模式,就将 0x11 放在低地址中,即 0x0010 中, 0x22 放在高地址中,即 0x0011 中。小端模式, 刚好相反。我们常用的 X86 结构是 小端模式,而 KEIL C51 则为大端模式。很多的ARM,DSP都为小端模式。有些ARM处理器还可以 由硬件来选择是大端模式还是小端 模式。

第一个方法:我们用指针

我们定义一个i=1,那么它在内存中的表示方式有以下两种

代码实现>

#include<stdio.h>
//返回1,小端
//返回0,大端
int check_sys()
{int i = 1;return (*(char*)&i);
}
int main()
{int ret = check_sys();if (ret == 1)printf("小端\n");elseprintf("大端\n");return 0;
}

运行结果>

第二个方法:用联合体(共用体)解决

联合的成员是共用同一块内存空间的

所以我们定义一个int i=1,然后返回c就可以了,因为int 占4个字节,而char只访问第一个字节

代码实现>

#include<stdio.h>
int check_sys()
{union{int i;char c;}u;u.i = 1;//返回1,小端//返回0,大端return u.c;}
int main()
{int ret = check_sys();if (ret == 1)printf("小端\n");elseprintf("大端\n");return 0;
}

运行结果>

供个人学习使用!

C语言——测试电脑大小端相关推荐

  1. C语言中的大小端转换与高低位颠倒

    在说大小端高低位之前,肯定要说明数据在计算机内是如何存储的.在计算机中,我们将数据分割成了一个一个的字节(byte),而每个字节又有8位(bit). 一个字节,可以声明为unsigned char型数 ...

  2. C语言--测试电脑存储模式(大端存储OR小端存储)

    相信大家都知道大端存储和小端存储的概念,这在平时,我们一般不用考虑,但是,在某些场合,这些概念就显得很重要,比如,在 Socket 通信时,我们的电脑是小端存储模式,可是传送数据或者消息给对方电脑时, ...

  3. C语言-MSB/LSB大小端序

    一.MSB和LSB 首先我们要理解什么是MSB和LSB.数据在计算机里面都是二进制存储的,二进制的最高位为MSB,最低位是LSB. MSB:Most Significant Bit(最高有效位),也就 ...

  4. 测试机器大小端的方法

    首先,给出一些大小端相关概念. 大小端的由来: 在乔纳森·斯威夫特的著名讽刺小说<格列夫游记>中,小人国内部分裂成Big-endian和Little-endian两派,区别在于一派要求从鸡 ...

  5. c语言高低位拷贝_C语言中的大小端转换与高低位颠倒

    总结一下最近工作学到的东西,主要是关于大小端与高低位. 在说大小端高低位之前,肯定要说明数据在计算机内是如何存储的.在计算机中,我们将数据分割成了一个一个的字节(byte),而每个字节又有8位(bit ...

  6. C语言实现浮点数大小端转化

    操作了一天,终于实现了浮点数的大小端转化.通过VS内存查看对应的二进制存储,发现终于改变了.之前因为类型的转化不当,总是输出不了正确的结果,一定要注意不要发生类型转化.我用了26.5做实验,原本41 ...

  7. c语言32bit数大小端转换,c语言大小端转化

    在工作中遇到一个问题,数据是以大端模式存储的,而机器是小端模式,必须进行转换,否则使用时会出问题. 一.定义: 大端模式(Big Endian):数据的高字节,保存在内存的低地址中:数据的低字节,保存 ...

  8. c语言联合验证大小端存储,2021C语言面试题及答案.docx

    1.关键字static的作用是什么? 这个简单的问题很少有人能回答完全.在C语言中,关键字static有三 个明显的作用:1)-在函数体,一个被声明为静态的变量在这一函数被调用过 程中维持其值不变.2 ...

  9. c语言测试时间片大小,C语言模拟实现时间片轮转算法和优先级调度算法

    一.目的和要求 进程调度是处理机管理的核心内容.本实验要求用高级语言编写模拟进程调度程序,以便加深理解有关进程控制快.进程队列等概念,并体会和了解优先数算法和时间片轮转算法的具体实施办法. 二.实验内 ...

最新文章

  1. 前端工程师的mysql笔记
  2. 拼接字符串时去掉最后一个多余逗号
  3. 系统中编译安装ZLMediaKit的步骤
  4. SpringBoot自定义MessageConverter
  5. 聊聊Elasticsearch的TimedRunnable
  6. 计算机二级基础知识微盘,计算机二级C++基础知识(整理版).pdf
  7. poj 3040 Allowance (贪心
  8. Springboot
  9. 高等数学第六版下册答案
  10. 大神级ppt作品欣赏_超写实绘画,逼真到让你怀疑自己的双眼,各路超写实大神作品欣赏...
  11. 什么软件可以在给多个视频添加马赛克同时批量裁剪画面呢?
  12. 线性代数高斯课堂笔记2
  13. 2017-2018 年终总结
  14. Word2Vec之Skip-Gram与CBOW模型
  15. 初识HTML,最基础走起~
  16. 兰德系数(Rand Index)
  17. Java学习 之 画图板 立方体
  18. diskpart(diskpart转换GPT)
  19. Integer 用法
  20. C语言——报数问题:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。

热门文章

  1. 华为OD机试真题 Java 实现【服务中心选址】【2023 Q1 | 200分】
  2. web前端-前端三剑客之CSS(1)
  3. 索尼为收购工作室准备,对抗微软?
  4. 为什么我们求职 找工作 一定要写好简历?
  5. 鸿蒙系统,鸿蒙app简易登录界面,界面开发教程
  6. FreeSWITCH的端口设置
  7. 电源设计2【DC/DC、PCB设计】
  8. CSS控制背景颜色和背景图像的方法
  9. python使用opencv实现人脸检测
  10. 苹果电容笔和apple pencil区别是什么?值得入手的电容笔品牌排行榜