浮點數用大小端儲存嗎 計算機儲存的大端法和小端法

2021-10-11 23:17:33 字數 1596 閱讀 9878

01引言

在計算機記憶體中,通常是以位元組(byte),也就是 8 個位(bit)為基本儲存單元(也有以 16 位為基本儲存單元的)。對於跨越多個位元組的資料型別(比如 int 長 4 個位元組),如何在記憶體中對這些位元組進行排序有兩種常見的方法:大端法(big-endian)和小端法(little-endian)

【注】首先不管是大端法還是小端法儲存,計算機在記憶體中存放資料的順序都是從低位址到高位址,所不同的是首先取低位元組的資料存放在低位址還是取高位元組資料存放在低位址。

比如說:0x12345 為了方便理解從左到右,位元組從高到底

02基本概念

高位放在低位址就是大端法

低位放在低位址就是小端法

例如0x0a0b0c0d的在大端和小端中的存放方式分別為:

程式驗證

#include
03注意

位元組序還是位序

大端法和小端法指的是位元組在記憶體中儲存時的排列規則,而不是資料中的位的排列規則。也有以位序排列的機器,但很少見。另外,再次明確一下,大端法或小端法是資料在儲存時的表現,而不是在暫存器中參與運算時的表現。

浮點數的位元組序

在所有機器上,浮點數在儲存時的位元組順序是和整數的位元組順序一樣的,所以在進行網路傳輸時,可以把浮點數當作整數進行位元組序轉換。但在歷史上,曾經有段時間因為 ieee 並沒有規定浮點數在網路上傳送的標準,所以浮點數都是以大端法進行儲存的。

04結語

大多數inter相容機只用小端法,android和ios也只用小端法;ibm和oracle的大多數機器用大端法,但它們的製造的個人電腦使用的是inter相容的處理器,因此使用小端法。

令人吃驚的是,對於哪種位元組順序更合適這個問題,人們表現的非常情緒化,從它的名字**就可看出

【「端」的起源】

術語「little endian(小端)」和「big endian(大端)」出自jonathan swift的《格列佛遊記》一書,其中兩個派別交戰的原因僅僅因為一方認為要從較大的一端敲開雞蛋,而另一方認為要從小的一端敲開雞蛋。

在作者的那個年代,swift是藉此諷刺英國和法國之間的持續衝突(難道命名者也是藉此諷刺大端法和小端法的矛盾,,,只是臆想,蒟蒻什麼也沒說)

浮點數在計算機中如何儲存

浮點型變數在計算機記憶體中占用4位元組 byte 即32 bit。遵循ieee 754格式標準。乙個浮點數由2部分組成 底數m 和 指數e。mantissa 2exponent 注意,公式中的mantissa 和 exponent使用二進位制表示 底數部分 使用 進製數來表示此浮點數的實際值。指數部...

浮點數在計算機中的儲存

float和double在儲存方式上遵從ieee規範!例如 8.25 整數部分 除2取餘倒排 除法商餘數 8 24 04 220 2 21 01 201 餘數倒排 1000 小數部分 乘2取整順排 乘法 積整數部分 0.25 2 0.50 0.5 2 1.01 整數部分順排 01 前兩步結合的結果為...

計算機儲存 大小端

大端模式,big endian,是指高位元組在前,低位元組在後的排布方式 具體來講,在儲存中高位元組在低位址,低位元組在高位址 在通訊中,高位元組先傳輸,低位元組後傳輸 小端模式,little endian,是指低位元組在前,高位元組在後的排布方式 具體來講,在儲存中低位元組在低位址,高位元組在高位...