導航:首頁 > 編程語言 > java大端與小端

java大端與小端

發布時間:2024-09-08 18:28:17

A. 大端存儲與小端存儲對存儲數據的要求

大端小端針對多位元組數據存儲時位元組順序而言的。所謂"Little Endian",為INTEL所採用模式,數據的低位元組存放在內存低地址中,高位元組存放在高地址中,即學X86時說的「高高低低」原則。Byte3 Byte2 Byte1 Byte0在內存中對應的是:

Base Address+0 Byte0
Base Address+1 Byte1
Base Address+2 Byte2
Base Address+3 Byte3

所謂"Big Endian" ,為MOTO所採用模式,數據的低位元組存放在內存的高地址,數據的高位元組存放在內存的低地址。Byte3 Byte2 Byte1 Byte0在內存中對應的是:

Base Address+0 Byte3
Base Address+1 Byte2
Base Address+2 Byte1
Base Address+3 Byte0

java使用的是大端序來存儲數據。big—endian:即低位元組的數據存儲在高位內存上,如對於1234,12是高位數據,34為低位數據,則java中的存儲格式應該為12存在內存的低地址,34存在內存的高地址,x86中的存儲格式與之相反。

B. java網路編程是大端還是小端

網路傳輸中採用的大端標記法,也就是說先傳比較高權值的數字, 就像 12一樣,先傳10,在傳2,就算丟了後面一個,損失也不是太大。

小端就跟機器有關了。你在封裝一個int之類的數字,封裝進去之後就應該是大端的了,可以調用裡面的 htons() 或者htonl()函數來轉化成大端的(當然你也可以自己按照大端的方式封裝,就會麻煩一點而已)。傳輸過程中當然也是大端的,接受到的buffer裡面當然也是大端的,但是你在讀取這個int類型的時候,就需要相應的將大端轉化為小端了(採用ntohs() 函數或ntohl()函數來實現),這樣你讀取到的就是原來的數字。

可想而知,假如你用機器A和B通信,而且A和B的端序都是一樣的話,中間自然就不用轉換來轉換去了。但是這不是好習慣,因為假如移植到另外端序的機器的話就需要修改代碼笭害蒂轎酈計墊襲叮陋。所以最好還是用那幾個函數。

C. 大端模式和小端模式

具體如下:


1、大端模式:

大端模式,是指數據的高位,保存在內存的低地址中,而數據的低位,保存在內存的高地址中,這樣的存儲模式類似於把數據當作字元串順序處理。

地址由小向大增加,而數據從高位往低位放;小端模式,是指數據的高位保存在內存的高地址中,而數據的低位保存在內存的低地址中,這種存儲模式將地址的高低和數據位權有效地結合起來,高地址部分權值高,低地址部分權值低,和我們的邏輯方法一致。

在大端模式下,前16位應該這樣讀: e6 84 6c 4e ( 假設int佔4個位元組)。

記憶方法: 地址的增長順序與值的增長順序相反。

2、小端模式例子:

0000430: e684 6c4e 0100 1800 53ef 0100 0100 0000。

0000440: b484 6c4e 004e ed00 0000 0000 0100 0000。

在小端模式下,前16位應該這樣讀: 4e 6c 84 e6( 假設int佔4個位元組)。

記憶方法: 地址的增長順序與值的增長順序相同。

大小端模式:

為什麼會有大小端模式之分呢?這是因為在計算機系統中,我們是以位元組為單位的,每個地址單元都對應著一個位元組,一個位元組為 8bit。但是在C語言中除了8bit的char之外,還有16bit的short型,32bit的long型(要看具體的編譯器),另外,對於位數大於 8位的處理器。

例如16位或者32位的處理器,由於寄存器寬度大於一個位元組,那麼必然存在著一個如何將多個位元組安排的問題。因此就導致了大端存儲模式和小端存儲模式。例如一個16bit的short型x,在內存中的地址為0x0010,x的值為0x1122,那麼0x11為高位元組,0x22為低位元組。

對於 大端模式,就將0x11放在低地址中,即0x0010中,0x22放在高地址中,即0x0011中。小端模式,剛好相反。我們常用的X86結構是小端模式,而KEIL C51則為大端模式。很多的ARM,DSP都為小端模式。有些ARM處理器還可以由硬體來選擇是大端模式還是小端模式。

閱讀全文

與java大端與小端相關的資料

熱點內容
androidapk安裝流程 瀏覽:422
郵箱顯示伺服器加密 瀏覽:133
linux最低配置 瀏覽:509
java生成pdf並列印 瀏覽:357
pagerhelper源碼 瀏覽:124
收款app軟體哪個好用 瀏覽:233
哈佛管理pdf 瀏覽:742
韓國語pdf 瀏覽:129
溯源碼為啥有的有有的沒 瀏覽:155
語音組合播報演算法 瀏覽:355
華為p6手機怎麼加密圖片 瀏覽:82
豆豆引流哪個app好 瀏覽:577
php頁面框架 瀏覽:24
安卓手機如何打開pdt文件 瀏覽:140
抽獎翻牌規則演算法 瀏覽:138
如何打開電腦自主編程器 瀏覽:563
加密貨幣刑事犯罪 瀏覽:692
哪裡可以買單片機 瀏覽:444
學習緩解壓力的原因 瀏覽:514
天津ug編程教育機構排名 瀏覽:295