精华内容
下载资源
问答
  • 大端小端存储方式
    2019-09-24 22:48:30

    参考 http://blog.csdn.net/favory/article/details/4441361

    从低地址------->高地址

    小端(llittle endian) 低字节------->高字节

    大端(big endian)   高字节------->低字节

     

    在一个处理器系统中,有可能存在大端和小端模式同时存在的现象

    这一现象为系统的软硬件设计带来了不小的麻烦,这要求系统设计工程师,必须深入理解大端和小端模式的差别

    大端与小端模式的差别体现在一个处理器的寄存器,指令集,系统总线等各个层次中

    系统中大小端的测试

    int main(void)
    {
      unsigned short test = 0x1234;

      if(*( (unsigned char*) &test ) == 0x12)
        printf("big endian\n");
      else
        printf("little endian\n");
    }

    转载于:https://www.cnblogs.com/Deanboy/p/7525917.html

    更多相关内容
  • 大端小端存储方式详解

    千次阅读 2022-03-30 17:23:40
    大端方式:用存储器的低字节地址单元来存放数据的最低字节 小端存放:用存储器的低字节地址单元来存放数据的最高字节 注: 在存储器中,左边的字节地址单元低于右边的字节地址单元,字节地址单元一般由八位二...
    • 大端方式:用存储器的低字节地址单元来存放数据的最高字节

    • 小端存放:用存储器的低字节地址单元来存放数据的最低字节

    注:
    在存储器中,左边的字节地址单元低于右边的字节地址单元,字节地址单元一般由八位二进制组成(即两位16进制数表示);而在数据的表示中,左边的字节高于右边的字节(数据的字节可以理解为数据转成16进制后,从右往左每相邻两位的一个组合,前面位数不够就补0)
    在这里插入图片描述

    实战例题:

    某计算机存储器按字节编址,采用小端方式存放数据。假定编译器规定int 型、float型和 short型长度分别为32位、32 位和16 位,并且数据按边界对齐存储。某C 语言程序段如下:

    struct{ 
         float a;
         char b;
         short c;
         short d;
         float e; 
         int f;
         char g[6];
         } record; 
    
       record.d= -0xCDAB; 
       record.e= 20.59375f;
    

    若record变量的首地址为0xFF24,则

    (1)地址0xFF2D中内容为0x___。(填十六进制数)
    (2)地址0xFF33 中内容为0x___。(填十六进制数)
    (3)浮点型record.e是按 IEEE754 标准编码后存放。
    (4)record.g[5]的地址为0x___。(填十六进制数)
    (5)结构体record一共占___个字节的大小。(填十进制数)

    注意:填写答案时,如须填写英文字母一律使用大写

    分配地址空间
    确定所求地址位置
    数据转换
    根据存储方式找出相应地址内容
    • Step1:

      先按照边界对齐存储方式将所需的内存空间进行分配,如图所示:(需要熟悉基本数据类型所占字节,一个小格子代表一个字节)

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0GBliTnU-1648632190619)(C:\Users\ghp\AppData\Roaming\Typora\typora-user-images\image-20220330162156963.png)]

    • Step2:

      找到要求数据所对应的地址位置

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F69HVlaL-1648632190620)(C:\Users\ghp\AppData\Roaming\Typora\typora-user-images\image-20220330162456879.png)]

    • Step3

      将该区域的数据采用小端存储(要先将该数据转换成补码,按16进制来存),然后观察该地址单元所对应的数据字节

      例如:

      • 0xFF2D地址所在区域是 short d 的存储位置,d= -0xCDAB 为整型真值,转成补码 [d]补:3255H 按小端方式存入,顺序为:5532;所以0xFF2D所存内容为:0x32
      • 同理可知0xFF33地址所在区域是 float e 的存储位置,将e=20.59375 为浮点数真值,通过IEEE754规范转换成16进制数为:41A4C000 按小端方式存入,顺序为:00C0A441;所以0xFF33所存内容为:0x41
    • Step4:

      要确定record.g[5]的地址,只需要一个格子一个格子的数出来即可,易知它的地址为:0xFF3D

    • Step5:

      计算出所用的单元格,(空值也需要计算,计算机是四个四个字节的读取,所以最后的两个空值也是需要计算)易知该record结构体所占字节为:28


    由上面的做题我们也可以得出一个结论:
    在C语言中结构体所占字节一定是4的倍数,同时结构体存储数据是按顺序存储的

    展开全文
  • 大端小端存储方式以及区别方法

    千次阅读 2020-03-20 12:01:21
    小端存储:高字节放在高地址,低字节放在低地址。 数据0X12345678在0X20000000地址上的存储方式: 地址 大端 0X20000000 0X78 0X12 0X20000001 0X56 0X34 0X20000002 0X34 0X...

    一、大端、小端存储区别

    大端存储:低字节放在高地址高字节放在低地址

    小端存储:高字节放在高地址低字节放在低地址

    数据0X12345678在0X20000000地址上的存储方式:

    地址小端大端
    0X200000000X780X12
    0X200000010X560X34
    0X200000020X340X56
    0X200000030X120X78

    二、区别机器存储方式

    #include "stdio.h"
    
    typedef union
    {
    	unsigned char b;
    	unsigned int a;
    }Test_Union;
    
    
    int main()
    {
    	Test_Union TU;
    	TU.a = 0X12345678;
        if(TU.b == 0X12)
        {
            printf("Big Endian\r\n");
        }
        else if(TU.b == 0X78)
        {
            printf("Little Endian\r\n");
        }
    	
    	return 0;
    }

     

    展开全文
  • 大端小端存储模式详解及判断方法

    千次阅读 2021-08-04 10:23:42
    文章目录大小模式的概念两种模式出现原因两种模式的优劣大小的应用情景判断机器的字节序 大小模式的概念 当我们查看数据在内存中的存储...这是因为在内存中存放数据通常会采用两种不同的存储模式:大端存储


    大小端模式的概念

    当我们查看数据在内存中的存储情况时,我们经常会发现一个很奇怪的现象,什么现象呢?

    int main()
    {
    	int i = 12;
    	return 0;
    }
    

    在这里插入图片描述
    在这里插入图片描述

    数据在内存中的存放方式似乎和我们想象的顺序不太一样,在我们的常规认知不一样,在我们的常规认知中,它的存放方式应该是 00 00 00 0c ,那造成这个现象的原因是什么呢?

    这是因为在内存中存放数据通常会采用两种不同的存储模式:大端存储和小端存储。

    • 大端存储模式:是指 数据的位 保存在 内存的地址 中,数据的位 保存在 内存的地址 中。
      这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;这和我们的阅读习惯一致。

    • 小端存储模式:是指 数据的位 保存在 内存的地址 中, 数据的位 保存在 内存的地址 中。
      这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低。

    用图举例:
    在这里插入图片描述

    用表举例:
    32bit宽的数 0x12345678 在CPU内存中的存放方式(假设从地址 0x4000 开始存放)为:

    数据高位  ->   数据低位
         0x12345678
    
    内存地址小端模式大端模式
    高地址0x40030x120x78
    0x40020x340x56
    0x40010x560x34
    低地址0x40000x780x12

    两种模式出现原因

    为什么会有大小端模式之分呢? 这是因为:

    • 有些变量类型的大小大于一个字节,如:16bit的short型,32bit的long型(要看具体的编译器)。
    • 有些处理器的位数大于8位,例如16位或者32位的处理器。那么其中的寄存器的宽度必定大于一个字节。

    总而言之,就是一个字节无法满足我们的存储需求,因此就诞生了大端小端这两种存储模式。


    两种模式的优劣

    大端小端没有谁优谁劣,各自优势便是对方劣势:

    • 小端模式 :
    1. 强制转换数据不需要调整字节内容,1、2、4字节的存储方式一样。
    2. CPU做数值运算时从内存中依次从低位到高位取数据进行运算,直到最后刷新高位的符号位,这样的运算方式会更高效。
    • 大端模式 :符号位的判定固定为第一个字节,容易判断正负。

    大小端的应用情景

    一般操作系统都是小端,而JAVA、通讯协议是大端的。

    对于处理器而言:

    • 小端模式:Intel的80X86系列芯片,ARM处理器默认采用小端、但可以切换成大端。
    • 大端模式:KEIL C51、PowerPC、IBM、Sun。

    判断机器的字节序

    那么我们该如何判断当前机器的字节序是大端还是小端?

    int 变量 i=258 为例,i 的16进制形式为 i=0102 ,用图来表示 i 以两种方式存储的结果:
    在这里插入图片描述
    小端存储模式最低位字节 存放的为 02大端存储模式 中放的为 00 。因此可以通过强制转换的方法,将一个四个字节的 int 数据截断为一个字节的 char 数据,即可得到这个低位的数据,再进行判断,如果为 02 则说明该机器为 小端存储模式,如果为 00 则说明为 大端存储模式

    代码实现:

    int main()
    {
        int i = 258;
        char ch = (char)i;
        if (ch == 02)
            printf("小端存储\n");
        else
            printf("大端存储\n");
        return 0;
    }
    

    运行结果:
    在这里插入图片描述
    验证:
    在这里插入图片描述

    展开全文
  • 开头讲个有关 大端小端的故事:  模式(Endian)的这个词出自Jonathan Swift书写的《格列佛游记》。这本书根据将鸡蛋敲开的方法不同将所有的人分为两类,从圆头开始将鸡蛋敲开的人被归为Big Endian,从尖头...
  • 开头讲个有关 大端小端的故事:  模式(Endian)的这个词出自Jonathan Swift书写的《格列佛游记》。这本书根据将鸡蛋敲开的方法不同将所有的人分为两类,从圆头开始将鸡蛋敲开的人被归为Big Endian,从尖头...
  • 数据存储大端小端

    千次阅读 2020-07-20 17:41:40
    大端小端 大端小端测试 写入测试 字节码文件的大小 前面说到,像C/C++这类语言编写的程序,它们被编译后,直接转换成了对应平台上的可被CPU直接运行的机器指令,转换之后,原本语言中的数据结构,例如...
  • 数据的存储,大端存储和小端存储

    千次阅读 多人点赞 2021-07-27 16:05:35
    在数据的存储中,有两种存储形式,大端存储和小端存储。 所有的数据都是在内存当中存的,而内存当中的基本单位是字节。 数据访存的基本单位是字节的话,那么一个整形变量(int)就有四个字节,那么就意味着数据在...
  • 存储单元中的存放方式,取决于计算机的主存单元的存储顺序 小端方式:由低字节到高字节(这是主存最常用的方式)例如 大端方式(在画图中,通常左高右低) 2、为什么会有大小? 1. 一开始是由于...
  • 之前做了许多的计算机组成原理题目,碰到大端存储方式小端存储方式就很烧脑,总是不理解,今天又着重复习了复习,分享给大家。 所谓的大端方式或者方式,其实是数据在内存单元中的存储方式。 这里先科普一些...
  • 大端存储和小端存储

    千次阅读 2022-04-24 15:11:52
    三、大端存储或小端存储都是由系统设定的,其二者区别在于低地址存储的数据,因此可以写程序进行判断。 #include <stdio.h> #include <stdlib.h> typedef union { //共用体 成员公用一个空间,空间为...
  • int型数据给出的地址是数据的起始地址内存地址从左向右,从上到下增大,左上方是低位地址数据是从低位向高位存储的,所以数据的起始地址是低位地址大小的数据是以字节为单位判断的1. 通过指针类型强制转换并对整型...
  • 判断计算机存储方式
  • 首先简单说一下所谓的“大端”以及“小端”的含义,其实大端小端其实是指由于处理器寄存器宽度不同,造成储存上的方式差异。"中心思想"是数据高低位数据存储的高低地址位置不同。小端是数据高字节存储在内存的高...
  • 大端存储与小端存储

    千次阅读 2020-07-29 11:37:04
    大端存储与小端存储 (1)定义 大端存储与小端存储模式主要指的是数据在计算机中存储的两种字节优先顺序。小端存储指从内存的低地址开始,先存储数据的低序字节再存高序字节;相反,大端存储指从内存的低地址开始...
  • 模式(Endian)的这个词出自Jonathan Swift书写的《格列佛游记》。这本书根据将鸡蛋敲开的方法不同将所有的人分为两类,**从圆头开始将鸡蛋敲开的人被归为Big Endian,从尖头开始将鸡蛋敲开的人被归为Littile ...
  •  在各种体系的计算机中通常采用的字节存储机制主要有两种: big-endian和little-endian,即大端模式和小端模式。  先回顾两个关键词,MSB和LSB:  MSB:Most Significant Bit ------- 最高有效位 LSB:Least ...
  • 运行程序,可判识并输出程序所在平台的存储方式,是大端还是小端
  •  大小是计算机存储的两种方式。  小端表示法(Little-endian):  所谓的小端模式,是指数据的高位保存在内存的高地址中,而数据的低位保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合...
  • 比如 一个变量x的十六进制表示为 0x01 23 45 67,如果是大端存储 则是这样存储的 高地址---------&gt;低地址 67 45 23 01 数据的高位 放在低地址 低位放在高地址而小端模式 是这样 ...
  • 「内存分配」大端小端详解

    多人点赞 热门讨论 2021-07-09 14:04:21
    大端小端是计算机系统内存存储的两种模式,可谓是如雷贯耳的存在了。 我本以为自己已经是完全明白了,然而有时碰到的时候却发现概念有些混淆,一旦遇到复杂的场景就不知所措了。 所以写下此篇博客记录心路历程。 ...
  • 小端存储:高字节放在高地址,低字节放在低地址。 例子: 0800H 0801H 0802H 0803H 大端方式 01H 23H 45H 67H 方式 67H 45H 23H 01H 注意: 在阅读方式存储...
  • 所谓的大端模式,是指数据的低位(就是权值较的后面那几位)保存在内存的高地址中,而数据的高位,保存在内存的低地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由向大增加,而数据从高位往...
  • 前言 ... 我们可以看到对于整型a和b分别存储的是补码,但是我们发现顺序有点不对劲,有一种数据好像存反的错觉,这又是为...这就和我们今天讨论的主题——大端存储模式和小端存储模式有着密切的关系。 什么是大小端 ...
  • 操作系统之大端小端

    千次阅读 2020-08-03 18:30:57
    1. 什么是大端,什么是小端: 所谓的大端模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中; 所谓的小端模式,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址...
  • 小端存储就是 低配低,高配高 大端存储反着来
  • 前些时候面试的时候的考题,现场没有写好,回来仔细想了想写出来的。聊表慰藉吧。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 27,536
精华内容 11,014
关键字:

大端小端存储方式

友情链接: PDA.rar