小端格式和大端格式

本文转载自 清风行云:小端格式和大端格式(Little-Endian&Big-Endian)

大端机和小端机

  不同的CPU有不同的字节序类型,这些字节序是指整数在内存中保存的顺序。

  最常见的有两种:

    1. Little-endian:将低序字节存储在起始地址(低位编址)

    2. Big-endian:将高序字节存储在起始地址(高位编址)


  小端机 LE(little-endian):

    最符合人的思维的字节序

    地址低位存储值的低位,地址高位存储值的高位

    怎么讲是最符合人的思维的字节序,是因为从人的第一观感来说,低位值小,就应该放在内存地址小的地方,也即内存地址低位;反之,高位值就应该放在内存地址大的地方,也即内存地址高位


  大端机 BE(big-endian):

    最直观的字节序

    地址低位存储值的高位,地址高位存储值的低位

    为什么说直观,不要考虑对应关系,只需要把内存地址从左到右按照由低到高的顺序写出,把值按照通常的高位到低位的顺序写出,两者对照,一个字节一个字节的填充进去


  实例

  例子1:在内存中双字0x01020304(DWORD)的存储方式。 

    内存地址 4000 4001 4002 4003

    LE      04   03   02   01

    BE      01   02   03   04

  注:每个地址存1个字节,每个字有4个字节。2位16进制数是1个字节(0xFF=11111111)。

  例子2:如果我们将0x1234abcd写入到以0x0000开始的内存中,则结果为

        big-endian   little-endian

    0x0000    0x12         0xcd

    0x0001    0x23         0xab

    0x0002    0xab         0x34

    0x0003    0xcd         0x12

  x86系列的CPU都是little-endian的字节序。

时间: 2024-10-01 04:50:17

小端格式和大端格式的相关文章

Linux网络编程1——小端模式与大端模式

数据存储优先顺序的转换 计算机数据存储有两种字节优先顺序:高位字节优先(称为大端模式)和低位字节优先(称为小端模式).内存的低地址存储数据的低字节,高地址存储数据的高字节的方式叫小端模式.内存的高地址存储数据的低字节,低地址存储数据高字节的方式称为大端模式. eg:对于内存中存放的数0x12345678来说(注意,对于数据而言,此处12是高字节,78是低字节:对于地址而言,左边是低地址,右边是高地址) 如果是采用大端模式存放的,则其真实的数是:0x12345678 如果是采用小端模式存放的,则其

测试计算机是小端存储还是大端存储

    一.理解大端存储和小端存储的概念     1).大端存储:大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放.                 2).小端存储:小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致.        

js arrayBuffer 字节序问题,小端法,大端法

原文博客 { var buffer = new ArrayBuffer(2) var bytes = new Uint16Array(buffer) bytes[0] = (65 << 8) + 66 var blob = new Blob([buffer], { type: 'text/plain' }) var dataUri = window.URL.createObjectURL(blob) open(dataUri) // BA 受系统的字节序影响,小端法 } { let buffe

Little-endian和Big-endian(小端数据和大端数据)

Little和Big指的是内存地址的大小,end指的是数据的末尾. Little-endian指内存地址低的地方存数据的末尾(即低字节) Big-endian指内存地址高的地方存数据的末尾(即高字节) 例:0x1234要存放进从0x4000开始的内存中 在Little-endian中 内存地址 存放内容 0x4000 0x34 0x4001 0x12 在Big-endian中 内存地址 存放内容 0x4000 0x12 0x4001 0x34

小端法与大端法

For ordering the bytes representing an object, there are two common conventions. Consider a w-bit integer having a bit representation [xw-1, xw-2, ... , x1, x0 ], where xw-1 is the most significant bit, and x0 is the least. Assuming w is a multiple o

大端小端格式详解

1. 什么是大端,什么是小端: 所谓的大端模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中: 所谓的小端模式,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中. 2.为什么会有大小端: 为什么会有大小端模式之分呢?这是因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8bit.但是在C语言中除了8bit的char之外,还有16bit的short型,32bit的long型(要看具体的编译器),另外,对于位数大于8位的处

大端格式、小端格式(转)

大端格式.小端格式 大端格式: 在这种格式中,字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中,如图2.1所示: 图2.1 小端格式: 与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节.如图2.2所示: 图2.2 请写一个C 函数,若处理器是Big_endian的,则返回0:若是Little_endian的,则返回1 解答: int checkCPU( ) { union w     {        int  a;        

大端格式 与 小端格式

1. 什么是大端,什么是小端: 所谓的大端模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中: 所谓的小端模式,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中. 2.为什么会有大小端: 为什么会有大小端模式之分呢?这是因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8bit.但是在C语言中除了8bit的char之外,还有16bit的short型,32bit的long型(要看具体的编译器),另外,对于位数大于8位的处

Motorola &amp; Intel, Big Endian &amp; Little Endian,大端和小端

在谈通讯相关编程的时候,我们需要对存储格式和机制加以留意. 1.由来 1980年,Danny Cohen在其著名的论文"On Holy Wars and a Plea for Peace"中为了平息一场关于在消息中字节该以什么样的顺序进行传送的争论而引用了该词.该文中,Cohen非常形象贴切地把支持从一个消息序列的最高位开始传送的那伙人叫做Big-Endians,支持从最低位开始传送的相对应地叫做Little-Endians.此后Endian这个词便随着这篇论文而被广为采用.(摘自百度