背景:
十進位制數,最高有效位msb在左邊,最低有效位lsb在右邊,即左邊為大。二進位制數其實也是一樣的,例如1001_0110表示的十進位制數就是96.那麼資料是怎麼存放在儲存器中的呢?無非就兩種存放模式:低位址存放msb,高位址存放lsb;低位址存放lsb,高位址存放msb。
命名:
但是這兩種方式該怎麼命名呢?得取個合理的計算機行業的名字才能提高理解效率,這個名稱早就已經取好了,就是「低位址存放msb,高位址存放lsb」稱為大端模式,「低位址存放lsb,高位址存放msb」稱為小端模式。可是這種模式本身與它的名字有什麼必然聯絡呢,以至於一說起名字就知道是什麼儲存模式,很遺憾,我記憶力差,每次遇到大端模式和小端模式我就會去查一下它們分別對應哪種儲存模式,非常的浪費乙個人的時間,那麼有沒有很奇特的方式能一下子就把名稱與儲存模式對應起來呢?網上查了,各種說法,有的說法變得更難記憶,有的說法相當於沒說,因此我決定自己想出一種方法能永遠記住這個。
記憶技巧:
低位址存放msb,就相當於弟弟拿大的,哥哥拿小的,而這是一種美德,是一種大的美德,因此稱為大端。所以以後一說起大端,就想到它是大的美德,大的美德就是小的拿到大的。
把0x1122334455這個數存放到儲存器中,採用大小端方式儲存就是如下方式:
大小端模式本質:
大端模式與小端模式是由硬體決定,具體是由cpu核心決定的,而不是儲存器決定,更不是編譯器決定的。儲存器只是一種具體的儲存媒介,至於怎麼存它可不管,你把好吃的放在自己的房間,把不好吃的放在姐姐房間,那是你自己的選擇,跟房間本身沒半毛錢關係。
引申:
1、乙個變數可能由若干個連續的儲存單元組成,每個儲存單元都有自己的位址,而變數本身也必須有自己的位址,那麼哪個儲存單元的位址代表這個變數的位址呢?答案是儲存單元最低位址作為變數的位址。
2、大端和小端的概念不僅僅用於資料儲存方面,還用於資料傳輸方面,傳輸的過程總會涉及到是先傳輸高有效位(msb)後傳輸低有效位(lsb),還是先傳輸低有效位(lsb)後傳輸高有效位(msb)
小端模式和大端模式 大端模式和小端模式
0x123456在記憶體中的儲存方式 大端模式 低位址 小端模式 低位址 不難看出大端模式比較符合人的直觀認識 1.一開始是由於不同架構的cpu處理多個位元組資料的順序不一樣,比如x86的是小段模式,keil c51是大端模式。但是後來網際網路流行,tcp ip協議規定為大端模式,為了跨平台通訊,還...
大端模式和小端模式
大端模式和小端模式 在c語言中除了8位的char型之外,還有16 位的short型,32 位的long型 要看具體的編譯器 對於位數大於8位的處理器,例如16位或者32位的處理器,由於暫存器寬度大於乙個位元組,那麼必然 存在著如何將多個位元組安排的問題。因此就導致了大端儲存模式和小端儲存模式。大端模...
大端模式和小端模式
所謂的大端模式,是指資料的低位 就是權值較小的後面那幾位 儲存在記憶體的高位址中,而資料的高位,儲存在記憶體的低位址中,這樣的儲存模式有點兒類似於把資料當作字串順序處理 位址由小向大增加,而資料從高位往低位放 所謂的小端模式,是指資料的低位儲存在記憶體的低位址中,而數 據的高位儲存在記憶體的高位址中...