1)大端模式:
低位址 -----------------> 高位址
0x12 | 0x34 | 0x56 | 0x78
2)小端模式:
低位址 ------------------> 高位址
0x78 | 0x56 | 0x34 | 0x12
3)常見大小端模式
一般作業系統都是小端,而通訊協議是大端的。
big endian : powerpc、ibm、sun
little endian : x86、dec
arm既可以工作在大端模式,也可以工作在小端模式。
bool isbigendian()return false;
}
bool isbigendian()第二種方法利用聯合的性質,共享一段記憶體,以達到節省空間的目的,只儲存最大長度的變數。當給a賦值的時候,a和b的起始位址是一樣的,它們共享一段記憶體,取出b段的數字低位址若存的是高位,那麼是大端模式。num;
num.a = 0x1234;
if( num.b == 0x12 )
return false;
}
主要思想是取出每個位元組,然後將位元組移動左移或右移。
#define bigtolittle16(a) (( ((uint16)(a) & 0xff00) >> 8)|(( (uint16)(a) & 0x00ff) << 8))參考資料:
把乙個數轉換為二進位制在其前面新增符號位,0為正數,1為負數。稱為原碼。
正數的反碼是自身,負數的反碼是保持符號位不變,其餘位取反。
補碼正數還是不變,負數是補碼+1。若是8位這補碼的範圍是[-128,127],其中-128為10000000,就不存在原始碼中-0情形。
更詳細的解釋:
浮點數存在小數點,但是計算機無法表示小數點,解決的方法是採用指數(科學計算法)的方式來表示,使得整數部分固定為1,這樣浮點數就可以分成三個部分來表示,第乙個部分是符號位,第二部分是指數字,第三部分是小數字。
例:以32位的浮點數為例說明一下
求129.5在計算機中的儲存
先將整數和小數部分分別表示為二進位制10000001.1,用科學計算法表示,1.00000011*2^7,符號位0,指數部分為7加上偏移127為134,二進位制為10000110,小數部分為10000000000000000000000(23位),結果為01000011010000000000000000000000
sign:1位,正數為0,負數為1.
exponet:8位,要加上127(為了表示那些指數為負數的浮點數),再轉換為二進位制。
fraction:23位,小數部分。
計算機中的位元組序問題
地點 基地 程式設計中的資料型別有很多事跨多個位元組的,比如char是用乙個位元組表示,而諸如int,float型別則用4個位元組表示double則用8個位元組表示,我們知道,資料物件例項是儲存在一定位址單元中的,我們也知道,儲存器中的每個位元組都由乙個唯一的位址標誌或者是儲存。那麼當資料物件跨多個...
浮點型在計算機中的儲存表示
之前一直不明白float在計算機中是如何儲存的,今天下決心 float型別資料 4byte 1bit 符號位 23bti 尾數字 8bit 指數字,範圍 127 128 double型別資料 8byte 1bit 符號位 52bti 尾數字 11bit 指數字,範圍 1023 1024 乙個浮點數可...
浮點數在計算機中的儲存
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 前兩步結合的結果為...