`
insertyou
  • 浏览: 901951 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

重新审视大端和小端

 
阅读更多

以前汇编课上讲过,但是我发现还不够。。。下面全面介绍了大端和小端。

大端和小端的历史:

一般吃鸡蛋都是打破鸡蛋大的一端再吃,但是有一次,一个国家的国王打鸡蛋时把手指弄破了,后来,他下令:以后打鸡蛋都从小端开始打。

为了讽刺这件事,就有了大端和小端的概念。

如果一个对象跨越多字节连续存储,则最小的地址就是对象的地址。

比如一个int,在32位和64位机器中都是4字节,如果对象地址为0x100,则整个int占据0x100,0x101,0x102,0x103.

我们都知道&符号,假如int x; &x就为x的地址,即0x100.

[31,30,29,.....1,0]为有效位数,最高有效位为31,最低有效位为0。

小端法:最低有效位存在最前面。

0x100 0x101

---------------------------------------------------------------------------------------------------

| 7,6,5,4,3,2,1,0 |15,14,13,12,11,10,9,8 | ....

----------------------------------------------------------------------------------------------------

大端法:最高有效位存在最前面。

0x100 0x101

---------------------------------------------------------------------------------------------------

|31,30,29,28,27,26,25,24| 23,22,21,20,19,18,17,16| ....

----------------------------------------------------------------------------------------------------

这两张图的对比就很明显的看出区别,就比如int x=2; 转换为16进制为0x00 00 00 02;

小端的存放顺序为:

0x100 0x101 0x102 0x103

----------------------------------------------------

|02 | 00 | 00 | 00 |

----------------------------------------------------

上面已经说过&x取得的是0x100,一般情况下程序员是看不出字节顺序的区别的。

在linux32中,结果为小端存储。

以下是检测大端小端的代码,

记住*****:我们要检测大端小端,必须要把他转化为unsigned char * ch才可以。因为这个ch[i]是一个字节。

--------------------------------------------------------------------------------------------------------------------

int x=0x12345678;

unsigned char *val=(unsigned char *)&x; //x的地址。

val[0] 为val的地址只指向的字节。

分享到:
评论

相关推荐

    大端模式和小端模式的概念,区别以及优缺点

    在实际应用中,许多系统提供了字节序转换函数,如C语言中的`htons()`、`ntohs()`等,用于在大端和小端模式间进行转换。了解并掌握这两种模式对于理解和解决跨平台问题非常关键。阅读“大端模式与小端模式.pdf”这个...

    大端小端 简单描述

    这就需要系统设计工程师深入理解大端和小端模式的差别,以便更好地设计和实现系统。 大端和小端模式的差别体现在一个处理器的寄存器、指令集、系统总线等各个层次中。这就需要系统设计工程师具备深入的技术知识和...

    字节序转换辅助类,字节大端小端转换

    字节序转换辅助类,short大小端转换,ushort大小端转换,int大小端转换,uint大小...short类型 小端转大端,short类型 大端转小端,int类型 小端转大端,int类型 大端转小端,long类型 小端转大端,long类型 大端转小端

    关于大小端--大端 小端 大小端

    在处理这些多字节数据时,不同的计算机架构有不同的处理方式,由此产生了大端和小端的区分。比如,X86架构通常采用小端模式,而ARM、DSP等处理器则可能采用小端模式,也有部分ARM处理器可以动态切换大小端模式。 在...

    解析大端模式和小端模式

    ### 解析大端模式和小端模式 在计算机科学领域,数据存储格式是理解硬件与软件交互的关键之一。其中,字节序(Byte Order)是一个重要概念,它指的是多字节数据类型(如整数、浮点数等)在内存中的存储顺序。目前...

    大端和小端的区别,数据在内存里面存放的方式,源代码讲解

    ### 大端和小端的区别 在计算机科学领域,大端(Big Endian)与小端(Little Endian)指的是多字节数据类型在内存中的存储顺序方式。这两种不同的存储方式直接影响了数据处理的效率以及跨平台数据交换的兼容性问题...

    大端小端模式

    根据数据的高位和低位在内存中的存储顺序,大端小端模式可以分为两种:大端模式和小端模式。 大端模式是指数据的低位保存在内存的高地址中,而数据的高位保存在内存的低地址中。例如,在大端模式下,16位宽的数 0x...

    西门子PLC接口,大端和小-Endian的存储格式.pdf

    西门子PLC接口,大端和小-Endian的存储格式pdf,西门子PLC接口,大端和小-Endian的存储格式:本文介绍了SINUMERIK:PLC接口,和Little-Endian的Big-Endian的存储格式

    win7 x86 大端 小端 判断

    运行程序,可判识并输出程序所在平台的存储方式,是大端还是小端。

    大端序和小端序

    "大端序和小端序" 大端序和小端序是计算机科学中的一种概念,用于描述多字节数据在内存中的存储顺序。这种顺序对于跨平台和网络程序非常重要,因为不同的平台和网络协议可能使用不同的字节序。 字节序可以分为两类...

    大端机小端机检查器-用于检查PC是大端机还是小端机

    大端机小端机检查器-用于检查PC是大端机还是小端机

    iOS 大端格式和小段格式

    理解并正确处理大端和小端格式对于软件开发尤其是涉及到网络编程、文件读写等场景至关重要。在iOS开发中,由于iPhone采用的是基于ARM架构的处理器,它支持两种字节序模式。因此,在编写跨平台应用或处理网络数据时,...

    TIA博途-32位浮点数大小端存储-高低字节转换全局FB库文件(4种字节排列顺序)-V17版本.zip

    TIA博途中的全局FB库文件"GF_Float_32Bit_ByteMode_Convert"很可能提供了一套函数块,用于处理32位浮点数在大端和小端模式之间的转换。这个库可能包含了四个不同的实现,对应四种字节排列顺序,以满足各种情况的需求...

    关于大端小端的说明.xlsx

    自己根据spy3中的大端与小端的使用,总结出大小端的理解与区别,及intel与motorola

    二进制文件大小端转换工具,

    这种顺序在不同的计算机架构中可能不同,分为大端模式(Big-Endian)和小端模式(Little-Endian)。大端模式下,高字节存储在内存地址较低的位置,而小端模式则相反,低字节在前。 标题中的“二进制文件大小端转换...

    十进制转十六进制包含大小端设置_大小端_matlab_十进制_十六进制_

    在计算机科学中,数据在内存中的存储方式有两种主要格式,即大端模式(Big-Endian)和小端模式(Little-Endian)。这两种模式涉及到多字节数据如何在字节序列中排列,对于理解和处理二进制数据至关重要。本文将详细...

    嵌入式系统/ARM技术中的解析大端模式和小端模式

    在计算机科学中,大端模式(Big-Endian)和小端模式(Little-Endian)是两种不同的字节存储顺序,主要应用于多字节数据类型如整数或浮点数的内存布局。这两种模式主要影响处理器如何在内存中存储数据的各个字节,...

    如何判断你的计算机是大端还是小端存储?

    如何判断你的计算机是大端还是小端存储?

Global site tag (gtag.js) - Google Analytics