❶ 某 32 位计算机按字节编址,采用小端(Little Endian)方式。若语句“int i =
-64用32位二进制存储,16进制表示为FF FF FF C0
又因为题目中说明是小端存储,即数据的低字节保存在内存的低地址中,所以要反过来是C0 FF FF FF
故而,选择A
❷ 计算机组成原理。。。。这个边界对齐方式存储 是怎么回事。。。还有小端方式存放数据什么意思
边界对齐:
比如说内存一行有16位然后现在你有1个八位的数据 1个四位的数据 和一个八位的数据
然后如果是 边界不对齐,就应该是内存的第一行存放第一个八位数据和四位数据,然后在存放另一个八位数据的前四位,然后后四位放在第二行,对吧?
但是如果是边界对其的那么
第一行只放第一个八位数据,和那个四位数据
然后,最后那个八位数据整个放在第二行。。。。
这样会出现空间的浪费,但是却容易寻址
能懂?
然后
计算机存储分为大端和小段,如果存数据的低位从内存的低位地址开始,那么就是小端,反之就是大端。。。
❸ 大端存储法还是小端存储法对存储数据有什么要求与影响
大端排序的好处是接收数据的程序可以优先得到数据的最高位,以便快速反应。
比如我有一个控制温度的上位机程序,该程序接收大端方式编码的温度信号0x00fe,对比原来的温度值,假设是0x0135。那么在接受第一个字节0x00的时候,上位机就可以判断温度比原来下降了,可以立即发出指令打开加热器。而对于小端排序的方式,上位机只有在接收到完整的两个字节的时候才能做出反应。如果采用串行通信,用只对信号的每一个字节单独校验的话,波特率为9600时,大端编码下,上位机的响应时间为1ms,小端排序方式下,上位机响应时间为2ms。这时,大端编码就比小端排序更快。如果需要对完整的通信包进行校验,则没有区别。
在串行通信测试程序中,计算机显示的字节顺序一般就是接收顺序。如果用大端编码的话,测试程序直接就可以显示出从大到小排列好的数据。而小端排序的方向相反,可视性不好,容易看花眼掉。
结论是:1、串行通信(包括以太网、WIFI、串口、USB等)如果采用大端编码有时会使系统响应更快速。2、串行通信采用大端编码有利于调试。
小端排序下,选定一个数据的起点后,只需要重复进位加法就可以实现高精度加法计算。减法也是一样。数组的第0位固定是最低位。而大端方式下,如果高精度计算的精度可变,就很难确定数组的第0位到底代表多大。不同精度的计算还会产生数据对齐问题。比如早期的16位CPU中,int类型和long类型做加法,用小端排序就很容易从指针位置开始计算。而大端排序则非常复杂。加法运算是非常常用的运算,其性能直接影响程序的整体性能。所以CPU中要采用性能较好的小端排序。
由于CPU本身是小端排序,如果内存和文件也采用小端排序的话,就可以把文件中的数据直接存储到内存中,再直接把内存中的数据存储到CPU的寄存器。这样不仅提高计算机的性能,程序也变得简单。
结论是:所有直接与硬件有关的代码都适合按小端排序
❹ 有没有嵌入式的高手想问一下什么叫大端/小端方式
端模式,英文j :Endian.该名词不只是存在于嵌入式之中.在计算机业界,简单概要的说Endian表示数据在存储器中的存放顺序。下文举例说明在计算机中大小端模式的区别。
如果将一个32位的整数0x12345678存放到一个整型变量(int)中,这个整型变量采用大端或者小端模式在内存中的存储由下表所示。为简单起见,本书使用OP0表示一个32位数据的最高字节MSB(Most Significant Byte),使用OP3表示一个32位数据最低字节LSB(Least Significant Byte)。
---------------------------
地址偏移 大端模式 小端模式
0x00 12(OP0) 78(OP3)
0x01 34(OP1) 56(OP2)
0x02 56(OP2) 34(OP1)
0x03 78(OP3) 12(OP0)
---------------------------
如果将一个16位的整数0x1234存放到一个短整型变量(short)中。这个短整型变量在内存中的存储在大小端模式由下表所示。
---------------------------------
地址偏移 大端模式 小端模式
0x00 12(OP0) 34(OP1)
0x01 34(OP1) 12(OP0)
-------------------------------------
由上表所知,采用大小模式对数据进行存放的主要区别在于在存放的字节顺序,大端方式将高位存放在低地址,小端方式将低位存放在高地址。采用大端方式进行数据存放符合人类的正常思维,而采用小端方式进行数据存放利于计算机处理。到目前为止,采用大端或者小端进行数据存放,其孰优孰劣也没有定论。
有的处理器系统采用了小端方式进行数据存放,如Intel的奔腾。有的处理器系统采用了大端方式进行数据存放,如IBM半导体和Freescale的PowerPC处理器。不仅对于处理器,一些外设的设计中也存在着使用大端或者小端进行数据存放的选择。
因此在一个处理器系统中,有可能存在大端和小端模式同时存在的现象。这一现象为系统的软硬件设计带来了不小的麻烦,这要求系统设计工程师,必须深入理解大端和小端模式的差别。大端与小端模式的差别体现在一个处理器的寄存器,指令集,系统总线等各个层次中。
另外再给你介绍一下它的来历趣闻:
端模式(Endian)的这个词出自Jonathan Swift书写的《格列佛游记》。这本书根据将鸡蛋敲开的方法不同将所有的人分为两类,从圆头开始将鸡蛋敲开的人被归为Big Endian,从尖头开始将鸡蛋敲开的人被归为Littile Endian。小人国的内战就源于吃鸡蛋时是究竟从大头(Big-Endian)敲开还是从小头(Little-Endian)敲开。在计算机业Big Endian和Little Endian也几乎引起一场战争。
从你提出的问题来讲,你应该对以上内容看得明白的,如果仍有不明白的话请再留言.
❺ 小端和大端的区别
大端模式和小端模式的区别:
在C语言中除了8位的char型之外,还有16位的short型,32位的long型(要看具体的编译器),对于位数大于8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在着如何将多个字节安排的问题。因此就导致了大端存储模式和小端存储模式。
大端模式:
字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。
小端模式:
与大端存储模式相反,在小端存储模式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。
我们常用的X86结构是小端模式,而KEIL C51则为大端模式。很多的ARM,DSP都为小端模式。有些ARM处理器还可以由硬件来选择是大端模式还是小端模式。
采用大端方式进行数据存放符合人类的正常思维,而采用小端方式进行数据存放利于计算机处理。
❻ 什么是存储多字节数据的小端方式
例如数字 0x2345 在内存中存储的时候低地址存45,高地址存23。
详细叙述如下:
Big-Endian和Little-Endian的定义如下:
1) Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。
2) Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。
举一个例子,比如数字0x12 34 56 78在内存中的表示形式为:
1)大端模式:
低地址 -----------------> 高地址
0x12 | 0x34 | 0x56 | 0x78
2)小端模式:
低地址 ------------------> 高地址
0x78 | 0x56 | 0x34 | 0x12
❼ 如何判断一个系统的存储方式是大端还是小端
采用大小模式对数据进行存放的主要区别在于在存放的字节顺序,大端方式将高位存放在低地址,小端方式将低位存放在高地址。采用大端方式进行数据存放符合人类的正常思维,而采用小端方式进行数据存放利于计算机处理。到目前为止,采用大端或者小端进行数据存放,其孰优孰劣也没有定论。
❽ 计算机存储数据时使用的大小段模式
你想问什么?
大端就是高位/高字节在前。例如32位整数0x89ABCDEF在内存中的排列顺序为 89 AB CD EF。
小端就是低位/低字节在前。例如32位整数0x89ABCDEF在内存中的排列顺序为 EF CD AB 89。
❾ 计算机组成原理,数据表示
选D吧,小端低地址是高位数据,对齐的话a分配4字节,b分配2个字节
❿ 判断一个机器使用的是大端存储还是小端存储
下面的程序可以判断一台机器是大端存储还是小端存储。
[cpp]view plain
#include<stdio.h>
intmain(intargc,char**argv){
//联合(union)中,所有成员引用的是内存中相同位置,
//由具体成员类型决定了这些位如何被解释
union{
shorts;
charc[sizeof(short)];
}un;
un.s=0x0102;//16进制数中,02是低序字节,01是高序字节
if(sizeof(short)==2){
if(un.c[0]==1&&un.c[1]==2){
printf("big-endian ");
}elseif(un.c[0]==2&&un.c[1]==1){
printf("little-endian ");
}else{
printf("unknow ");
}
}else{
printf("sizeof(short)=%d ",sizeof(short));
}
return0;
}