當前位置:首頁 » 服務存儲 » 某計算機採用小端方式存儲
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

某計算機採用小端方式存儲

發布時間: 2023-01-07 14:48:23

❶ 某 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;

  • }