精华内容
下载资源
问答
  • 小端方式
    千次阅读
    2021-08-18 20:29:06

    之前做了许多的计算机组成原理题目,碰到大端存储方式和小端存储方式就很烧脑,总是不理解,今天又着重复习了复习,分享给大家。

    所谓的大端方式或者小端方式,其实是数据在内存单元中的存储方式。

    这里先科普一些计算机的基本常识,

    计算机中大多数是以字节进行顺序编址,如 0000 0000H(十六进制)是指共有2的32次方个内存单元,每个单元可以存放一个字节(即一共4GB的内存空间),一个字节代表8bit(比特)。

    其中2位十六进制 = 8位二进制数,比如 00H = 0000 0000b,即一个字节。

    所以一般一个字节需要 2位16进制数进行存储,那么什么是大端方式和小端方式呢?

    假设以存储地址 1234 5678H 存储一个int类型变量 100,即 0000 0064H(十六进制表示),
    该数据的从高字节部分---->低字节部分: 00H---->00H---->00H---->64H
    该数据的从低字节部分---->高字节部分: 64H---->00H---->00H---->00H

    大端方式:

    大端方式指的是,数据的高字节部分保存在低地址,数据的低字节部分保存在高地址(后部分不建议记,反而容易搞混)。

    则1234 5678H存储 00H,1234 5679存储 00H,1234 567A存储 00H,1234 567B存储 64H。

    即低地址部分保存高字节数据。

    小端方式:

    小端方式指的是,数据的低字节部分保存在低地址,数据的高字节部分保存在高地址(后部分不建议记,反而容易搞混)。

    则1234 5678H存储 64H,1234 5679存储 00H,1234 567A存储 00H,1234 567B存储 00H。

    即低地址部分保存低字节数据。

    要想深刻理解这些概念还需认真领悟存储器的工作方式以及数据的存储方式,多做题也十分重要,加油加油!

    更多相关内容
  • 大端方式和小端方式

    万次阅读 2018-04-24 18:10:49
    原地址:https://blog.csdn.net/czg13548930186/article/details/72874798 大端和小端是指数据在内存中的存储模式,它由 CPU 决定:1) 大端模式(Big-endian)是指将数据的低位(比如 1234 中的 34 就是低位)...
    大端和小端是指数据在内存中的存储模式,它由 CPU 决定:
    1) 大端模式(Big-endian是指将数据的低位(比如 1234 中的 34 就是低位)放在内存的高地址上,而数据的高位(比如 1234 中的 12 就是高位)放在内存的低地址上。这种存储模式有点儿类似于把数据当作字符串顺序处理,地址由小到大增加,而数据从高位往低位存放。

    2) 小端模式(Little-endian是指将数据的低位放在内存的低地址上,而数据的高位放在内存的高地址上。这种存储模式将地址的高低和数据的大小结合起来,高地址存放数值较大的部分,低地址存放数值较小的部分,这和我们的思维习惯是一致,比较容易理解。

    为什么有大小端模式之分

    计算机中的数据是以字节(Byte)为单位存储的,每个字节都有不同的地址。现代 CPU 的位数(可以理解为一次能处理的数据的位数)都超过了 8 位(一个字节),PC机、服务器的 CPU 基本都是 64 位的,嵌入式系统或单片机系统仍然在使用 32 位和 16 位的 CPU。

    对于一次能处理多个字节的CPU,必然存在着如何安排多个字节的问题,也就是大端和小端模式。以 int 类型的 0x12345678 为例,它占用 4 个字节,如果是小端模式(Little-endian),那么在内存中的分布情况为(假设从地址 0x 4000 开始存放):
    内存地址0x40000x40010x40020x4003
    存放内容0x780x560x340x12

    如果是大端模式(Big-endian),那么分布情况正好相反:
    内存地址0x40000x40010x40020x4003
    存放内容0x120x340x560x78

    我们的 PC 机上使用的是 X86 结构的 CPU,它是小端模式;51 单片机是大端模式;很多 ARM、DSP 也是小端模式(部分 ARM 处理器还可以由硬件来选择是大端模式还是小端模式)。

    借助共用体,我们可以检测 CPU 是大端模式还是小端模式,请看代码:
    
      
    1. #include <stdio.h>
    2. int main(){
    3. union{
    4. int n;
    5. char ch;
    6. } data;
    7. data.n = 0x00000001; //也可以直接写作 data.n = 1;
    8. if(data.ch == 1){
    9. printf("Little-endian\n");
    10. }else{
    11. printf("Big-endian\n");
    12. }
    13. return 0;
    14. }
    在PC机上的运行结果:
    Little-endian

    共用体的各个成员是共用一段内存的。1 是数据的低位,如果 1 被存储在 data 的低字节,就是小端模式,这个时候 data.ch 的值也是 1。如果 1 被存储在 data 的高字节,就是大端模式,这个时候 data.ch 的值就是 0。
    
    展开全文
  • 其中,某指令的一个操作数的机器数为ABCD00FFH,该操作数采用基址寻址方式,指令中形式地址(用补码表示)为FF00H,当前基址寄存器的内容为C000 0000H,则该操作数的LSB(即FFH)存放的地址是()。 问题1选项 A.C...

    1、须知:

    大端模式(Big-endian)

    高位字节排放在内存的低地址端,低位字节排放在内存的高地址端,即正序排列,高尾端;
    在这里插入图片描述

    小端模式(Little-endian)

    低位字节排放在内存的低地址端,高位字节排放在内存的高地址端,即逆序排列,低尾端;
    在这里插入图片描述

    LSB

    英文 least significant bit,中文义最低有效位。

    MSB

    Most Significant Bit的缩写,指最高有效位。
    在这里插入图片描述

    2、课本例题

    在这里插入图片描述
    1 、LSB存放的地址即最低有效字节地址,由于小端方案,最低有效字节存储在最小地址位置。
    2 根据基址寻址,该地址为基址寄存器内容+形式地址。

    基址寄存器内容:C000 0000H

    内存:(我们先假设这个数据的LSB为00H)
    低地址 | 00|数据低字节 ,
    高地址 | XX| 数据低字节
    
    LSB为00,这里形式地址FF00是负数,
      补码操作如下:
    
      C000   0000H+     FFFF   FF00H=BFFF     FF00H
    
     换成原码操作,
    C000 0000H - 0100H ( FF00的原码为 -0100H) = BFFF FF00H  
      
    

    3、类型题:

    某计算机按字节编址,采用大端方式存储信息。其中,某指令的一个操作数的机器数为ABCD00FFH,该操作数采用基址寻址方式,指令中形式地址(用补码表示)为FF00H,当前基址寄存器的内容为C000 0000H,则该操作数的LSB(即机器数的最后的FFH–低位在内存的高地址端)存放的地址是()。
    问题1选项
    A.C000 FF00H
    B.C000 FF03H
    C.BFFF FF00H
    D.BFFF FF03H

    -D
    同理:
    基址寄存器内容:C000 0000H

    内存:
    低地址 |	AB|数据高字节 ,
    	  | CD|
    	  | 00|
    高地址 | FF| 数据低字节
    
    LSB为FF,这里形式地址FF00是负数,
      补码操纵如下:
    
      C000  0000h+ FFFF  FF00=BFFF FF00H  
      上一道题实际上求到的地址是我们这道题的ABH(MSB)存放位置,还要再移动3次字节的位置才到达LSB。
    数据每次移动1个字节(相当于AB->CD),在内存中的地址是移动1,
      所以需要移动3,也就是在上一题的基础上,再加上3
      即是BFFF FF03H 
    

    这2道题刚好来分辨大小端存储信息的不同。

    展开全文
  • ## 有两种不同的地址指定方式:大端方式和小端方式 大端方式:指令中给出的地址是操作数最高有效字节(MSB)所在的地址 小端方式:指令中给出的地址是操作数最低有效字节(LSB)所在的地址 以本体给出的操作数 ...

    首先,分析条件,弄清概念:

    ## 有两种不同的地址指定方式:大端方式和小端方式

    大端方式:指令中给出的地址操作数最高有效字节(MSB)所在的地址

    小端方式:指令中给出的地址操作数最低有效字节(LSB)所在的地址

    以本题给出的操作数 1234 FF00H 为例:

    操作数的MSB为12H,LSB为00H

     指令给出的地址   
    大端方式12H(MSB)34HFFH00H(LSB)
    小端方式00H(LSB)FFH34H12H(MSB)

     

    ## 机器数:是将符号"数字化"的数,是数字在计算机中的二进制表示形式,即指由计算机硬件进行存储和处理的二进制数。

    操作数的机器数为1234 FF00H:得到 操作数占4个字节

    故,在此题中,操作数的存放如下:

     

    ## 基址寻址:将 CPU 中基址寄存器的内容(BR) + 指令格式中的形式地址A → 操作数的有效地址EA,即 EA=(BR)+A

    基址寄存器的内容为F000 0000H:即 (BR) = F000 0000H (注:内存地址是无符号数)

    形式地址(补码表示)为FF12H:即 A = (-00EEH)

     

    故 有效地址EA = (BR) + A = F000 0000H + (-00EEH) = EFFF FF12H

    该操作数的LSB(最低有效字节)所在地址为 EA+3 = EFFF FF15H,选【D】

     

     

     

    展开全文
  • 本文写的很详细,搞了很久才理解这块的东西,如有错误请指出. ...大端和小端是指数据在内存中的存储模式,它由 CPU 决定: 1)大端模式(Big-endian)是指将数据的低位(比如 1234 中的 34 就是低位)放在内存的高地..
  • 大端小端存储方式详解

    千次阅读 2022-03-30 17:23:40
    大端方式:用存储器的低字节地址单元来存放数据的最低字节 小端存放:用存储器的低...某计算机存储器按字节编址,采用小端方式存放数据。假定编译器规定int 型、float型和 short型长度分别为32位、32 位和16 位,..
  • 在计算机中,数据是要被存储起来的,那么数据的存储方式是怎么样的?或者说,数据是按照怎样的形式进行排列的?计算机在存放数据和解析数据的过程中是怎么做的? 大小存储的含义: 大小存储决定的是某个数据...
  • 大端小端

    千次阅读 2019-10-23 06:24:48
    计算机硬件有两种储存数据的方式:大端字节序(big endian)和小端字节序(little endian)。 举例来说,数值0x2211使用两个字节储存:高位字节是0x22,低位字节是0x11。 大端字节序:高位字节在前,低位字节在后,...
  • 数据的存储,大端存储和小端小端存储

    千次阅读 多人点赞 2021-07-27 16:05:35
    在数据的存储中,有两种存储形式,大端存储和小端存储。 所有的数据都是在内存当中存的,而内存当中的基本单位是字节。 数据访存的基本单位是字节的话,那么一个整形变量(int)就有四个字节,那么就意味着数据在...
  • 二者的定义及区别: 大端存储:低字节放在高地址,高字节放在低地址。...在阅读小端方式存储的机器代码时,要注意字节是按相反顺序显示的 eg: 机器代码:4004d3(十六进制地址): 01 05 64 94 0...
  • 深入理解计算机大端与小端

    千次阅读 2020-04-15 15:53:39
    大端与小端 在嵌入式开发中,大端(Big-endian)和小端(Little-endian)是一个很重要的概念。 MSB与LSB 最高有效位(MSB)指二进制中最高值的比特。在16比特的数字音频中,其第1个比特便对16bit的字的数值有最大...
  • 小端存储就是 低配低,高配高 大端存储反着来
  • 关于大端和小端,容易混淆,现在只记小端小端,是数的高位存在内存地址的高位,小高高! 下面是从网上摘抄的一些东东,帮助理解和记忆,来自http://www.52rd.com/Blog/Detail_RD.Blog_imjacob_14837.html: ...
  • 大端模式和小端模式

    万次阅读 多人点赞 2018-08-28 17:09:25
    小端模式(Little-endian):低位字节排放在内存的低地址端,高位字节排放在内存的高地址端,即逆序排列,低尾端; 例(无论是小端模式还是大端模式。每个字节内部都是按顺序排列): 1)大端模式: 低地址 ------...
  • 转自 https://blog.csdn.net/ce123_zhouwei/article/details/6971544详解大端模式和小端模式一、大端模式和小端模式的起源 关于大端小端名词的由来,有一个有趣的故事,来自于Jonathan Swift的《格利佛游记》:...
  • “大端”和“小端”可以追溯到1726年的Jonathan Swift的《格列佛游记》,其中一篇讲到有两个国家因为吃鸡蛋究竟是先打破较大的一端还是先打破较小的一端而争执不休,甚至爆发了战争。1981年10月,Danny Cohen的文章...
  • 大端存储和小端存储的区别

    千次阅读 2021-07-30 10:09:45
    小端存储:数据的低字节存储在内存低地址,数据的高字节存储在内存高地址。---典型CPU:inter X86系列 例如要存储一个32位的unsgiend int型的变量vol=0x12345678,两种不同存储模式如下: 地址偏移量 大端存储 ...
  • 大端存储与小端存储

    千次阅读 2020-07-29 11:37:04
    大端存储与小端存储 (1)定义 大端存储与小端存储模式主要指的是数据在计算机中存储的两种字节优先顺序。小端存储指从内存的低地址开始,先存储数据的低序字节再存高序字节;相反,大端存储指从内存的低地址开始...
  • 大端和小端

    千次阅读 2021-03-10 11:00:05
    一、什么是大端和小端 大端模式,就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。 小端模式,就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。 举个例子,比如数字 0x12 34 56...
  • 计算机中的大端存储和小端存储

    万次阅读 多人点赞 2020-05-25 17:07:35
    小端存储在起始地址处,即是小端字节序;大端存储在起始地址处,即是大端字节序。 大端存储模式:数据的低位保存在内存中的高地址中,数据的高位保存在内存中的低地址中; 小端存储模式:数据的低位保存在内存中的低...
  • 小端低字节存放低地址 为什么叫高字节和低字节,而不是高位和低位? 因为字节是网络传输中的最小单位,底层接口每次发送数据为一个字节, 所以对于大端和小端来说,一字节内部的8位的顺序是一样的 什么是高字节? ...
  • 大小模式

    千次阅读 2018-07-08 18:07:21
    小端模式:内存低地址存放低字节 例如:Uint32 i = 0x12345678 地址 大端 小端 0x00 12 78 0x01 34 56 ...
  • 大小以及对齐方式

    千次阅读 2018-08-16 15:34:02
    一、大小 计算机中,数据寻址时用的是低位字节的地址。即: C中的数据类型都是从内存的低地址向高地址扩展,取址运算"&amp;"都是取低地址。所以就有高位地址和低位地址区别,一般来说数字大的就是高...
  • 大端格式、小端格式

    万次阅读 2014-08-07 15:52:20
    大端格式、小端格式 大端格式: 在这种格式中,字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中,如图2.1所示:   图2.1 小端格式: 与大端存储格式相反,在小端...
  • 什么是大端模式和小端模式

    千次阅读 2019-10-31 15:35:48
    小端模式(little endian):低位(字节/比特)放在低地址中,高位(字节/比特)放在高地址中。 在串口等串行通信中,一次只能发1个字节。这个时候遇到一个问题。int类型有4个字节。我们是按照什么顺序发送字节呢...
  • 关于大端和小端,容易混淆,现在只记小端小端,是数的高位存在内存地址的高位 下面是从网上摘抄的一些东东,帮助理解和记忆,来自http://www.52rd.com/Blog/Detail_RD.Blog_imjacob_14837.html: 端模式(Endian...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 991,734
精华内容 396,693
关键字:

小端方式