美文网首页
计算机中的大小端问题

计算机中的大小端问题

作者: 姚兴泉 | 来源:发表于2018-08-14 07:24 被阅读0次

1、大小端问题的由来

在计算机内存中,通常是以字节(Byte),也就是 8 个位(Bit)为基本存储单元(也有以 16 位为基本存储单元的)。

对于像C++中的char这样的数据类型,占用一个字节的大小,不会产生什么问题。

但是当数据类型为int,在32bit的系统中,它需要占用4个字节(32bit),这个时候就会产生这4个字节在寄存器中的存放顺序的问题。比如int maxHeight = 0x12345678,&maxHeight = 0x0042ffc4。具体的该怎么存放呢?这个时候就需要理解计算机的大小端的原理了。

2、大小端的原理

大端:(Big-Endian):就是把数值的高位字节放在内存的低位地址上,把数值的低位字节放在内存的高位地址上。

小端:(Little-Endian):就是把数值的高位字节放在高位的地址上,低位字节放在低位地址上。

【注】不管是大端法还是小端法存储,计算机在内存中存放数据的顺序都是从低地址到高地址,所不同的是首先取低字节的数据存放在低地址还是取高字节数据存放在低地址。

        大端法和小端法指的是字节在内存中存储时的排列规则,而不是数据中的位的排列规则。也有以位序排列的机器,但很少见。另外,再次明确一下,大端法或小端法是数据在存储时的表现,而不是在寄存器中参与运算时的表现。

3、大小端比较

        我们常用的x86结构都是小端模式,而大部分DSP,ARM也是小端模式,不过有些ARM是可以选择大小端模式。所以对于上面的maxHeight是应该以小端模式来存放,具体情况请看下面两表。

(1)小端规则

(2)大端规则

        通过上面的表格,可以看出来大小端的不同。(注:其实在计算机内存中并不存在所谓的数据类型,比如char,int等的。这个类型在代码中的作用就是让编译器知道每次应该从那个地址起始读取多少位的数据,赋值给相应的变量。)

相关文章

  • 计算机中的大小端问题

    1、大小端问题的由来 在计算机内存中,通常是以字节(Byte),也就是 8 个位(Bit)为基本存储单元(也有以 ...

  • 大小端问题

    如果将一个32位的整数0x12345678存放到一个整型变量(int)中,这个整型变量采用大端或者小端模式在内存中...

  • 大小端问题

    什么是大小端? 大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式...

  • 大小端问题

    一、定义 大端模式:大端模式就是指把数据的高字节保存在内存的低地址中,数据的低字节保存在内存的高地址中,这和我们一...

  • 大端小端问题

    为什么有大小端问题 大端 小端 解决大小端方法: 或者:

  • CPU大小端问题

    大小端 CPU有大小端之分,大端是指数据的高位数据保存在低位地址,而低位数据保存在高位地址;小端是指数据的低位数据...

  • 数据大小端问题

    假如有一个4字节的数据为 0x12 34 56 78(十 进制:305419896 ,0x12为高字节,0x78...

  • 大小端

    Java与平台无关默认是大端,网络上传输数据普遍采用大端C语言默认是小端数据在计算机中存储的大小端两种,以十进制数...

  • union分配和大小端

    题目: 看程序写出输出结果 基本概念: 这题涉及到Union的内存分配问题和大小端的问题。 下面先对大小端和Uni...

  • iOS 开发之字符编码 大小端问题

    一、什么是大小端问题 (From《ComputerSystems,AProgramer'sPerspective》...

网友评论

      本文标题:计算机中的大小端问题

      本文链接:https://www.haomeiwen.com/subject/bnfmbftx.html