彻底弄懂什么是大小端

您所在的位置:网站首页 音频大小是什么意思啊 彻底弄懂什么是大小端

彻底弄懂什么是大小端

2024-07-09 12:09| 来源: 网络整理| 查看: 265

一、什么是大小端?

表示数据在存储器中的存放顺序 小端模式:数据的高字节,存放在高地址中。计算机读取数据的方向,是从高地址开始读取的; 大端模式:数据的高字节,存放在低地址中。计算机读取数据的方向,是从低地址开始读取的; 记忆口诀:“小端低低” iOS都是小端模式。

二、举列:

列1: 要存放的数据:0x12345678 低字节为:0x12 高字节为:0x78

截图.png

小端模式计算机读取数据方向:

小端模式: 内存中存放顺序:0x12,0x34,0x56,0x78 读取数据方向:从高地址开始读取数据 读取结果:0x78,0x56,0x34,0x12

大端模式: 内存中排存放序:0x78,0x56,0x34,0x12 读取数据方向:从低地址开始读取数据 读取结果:0x78,0x56,0x34,0x12

列2: 要存放的数据:0x00000004 低字节为:0x04 高字节为:0x00

小端模式: 内存中存放顺序:0x04,0x00,0x00,0x00 读取数据方向:从高地址开始读取数据 读取结果:0x00000004

大端模式: 内存中排存放序:0x00,0x00,0x00,0x04 读取数据方向:从低地址开始读取数据 读取结果:0x00000004

三、为什么有大小端模式之分呢?

由于各硬件商,按自己的构想设计硬件,导致了硬件设计不同,工作原理也有差异。所以有的硬件采用了大端模式,有的硬件采用了小端模式。都认为各自采用的模式是更优秀;

四、经典笔试题:用C语言代码测试机器大小端 #include union myunion{ int a; char b; }; int main(void) { union myunion s1; //共用体测试 s1.a=0x10000000; if(s1.b==0x10) puts("da端模式"); if(s1.b==0x00) puts("xiao端模式"); int a; a=0x10000001; //指针测试 char b=*((char*)(&a)); if(b==0x10) puts("大端模式"); else if(b==0x01) puts("小端模式"); return 0; }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3