資料的儲存

2021-09-29 03:02:36 字數 3013 閱讀 1195

計算機都是二進位制來儲存資料的。

計算機用原碼,反碼,補碼來表示有符號數。資料有符號位和資料為,符號位有『0』和『1』,1表示負數,0表示正數。

原碼:直接將二進位制按照正負數的形式翻譯成二進位制就可以。

反碼:將原碼的符號位不變,其他位依次按位取反就可以得到了。

補碼:反碼+1就得到補碼。

在這個簡單的程式中我們可以看見a的記憶體位址為04 00 00 00,跟我們寫出來00 00 00 04不一樣,這是因為大小端問題。

什麼是大小端:

大端(儲存)模式:是指資料的低位儲存在記憶體的高位址中,而資料的高位,儲存在記憶體的低位址中;

小端(儲存)模式:是指資料的低位儲存在記憶體的低位址中,而資料的高位,,儲存在記憶體的高位址中。

為什麼有大小端:

為什麼會有大小端模式之分呢?這是因為在計算機系統中,我們是以位元組為單位的,每個位址單元都對應著乙個位元組,乙個位元組為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處理器還可以由硬體來選擇是大端模式還是小端模式。

判斷自己的電腦是大端還是小端儲存:

**1

int

check_sys()

intmain()

else

return0;

}

**二:

int

check_sys()

un; un.i =1;

return un.c;

}int

main()

else

return0;

}

首先我們可以通過兩個**來看這個問題:

**1

#include

intmain()

結果:

這個執行結果為4294967168不是-128.

我們知道char型別的常量佔乙個位元組(8個bite位)

常數128是乙個整型,佔四個位元組(32個bite位)

i只能儲存乙個位元組(八個bite位)的二進位制位。

-128的二進位制位位:

這是i的位址位為10000000

u%列印需要整型提公升。

00000000 00000000 00000000 10000000

01111111 11111111 11111111 10000000

所以結果為4294967168

**2

#include

intmain()

執行結果:

128的二進位制位址位

有符號數以補碼儲存,所以char型別i的二進位制位址為10000000,

而列印以%u列印這就要整型提公升

因此:這是i的位址位011111111 11111111 11111111 10000000這是無符號列印所以為4294967168,如果是%d列印結果就是-128

浮點型在記憶體中的儲存

浮點數家族包括: float、double、long double 型別。

int

main()

結果:

num 和 *pfloat 在記憶體中明明是同乙個數,為什麼浮點數和整數的解讀結果會差別這麼大? 要理解這個結果,一定要搞懂浮點數在計算機內部的表示方法。

詳細解讀:

根據國際標準ieee(電氣和電子工程協會) 754,任意乙個二進位制浮點數v可以表示成下面的形式:

(-1)^s * m * 2^e

(-1)^s表示符號位,當s=0,v為正數;當s=1,v為負數。

m表示有效數字,大於等於1,小於2。

2^e表示指數字。

舉例來說: 十進位制的5.0,寫成二進位制是 101.0 ,相當於 1.01×2^2 。 那麼,按照上面v的格式,可以得出s=0,

m=1.01,e=2。

十進位制的-5.0,寫成二進位制是 -101.0 ,相當於 -1.01×2^2 。那麼,s=1,m=1.01,e=2。

ieee 754規定: 對於32位的浮點數,最高的1位是符號位s,接著的8位是指數e,剩下的23位為有效數字m。

對於64位的浮點數,最高的1位是符號位s,接著的11位是指數e,剩下的52位為有效數字m。

PostgreSQL的資料儲存 八 資料儲存

在作業系統層面,資料儲存,只是一些二進位制資訊,這個層次,是不知道檔案內容的含義的。檔案的邏輯含義,取決於應用層面。資料庫系統的檔案組織,也如此。在外存儲存,以二進位制格式存放,讀寫檔案,以塊 8k 為單位,讀入的資料,存放與資料緩衝區,所以,資料的邏輯含義,始於資料緩衝區。在bufpage.h檔案...

資料的儲存

1.整形在記憶體中的儲存 1 在計算機系統中,整數統一用補碼來表示和儲存。原碼 直接將二進位制按照正負數的形式翻譯成二進位制。反碼 將原碼的符號位不變,其他位按位取反。補碼 反碼加1就得到補碼。正數的原碼,反碼,補碼都相同 2 在記憶體中儲存時,還有大小端儲存方式 大端 儲存 模式,是指資料的低位儲...

資料的儲存

列表是一種儲存大量資料的儲存模型。列表具有索引的概念,可以通過索引操作列表中的資料。列表中的資料可以進行新增 刪除 修改 查詢等操作。建立列表 變數名 資料1,資料2,獲取列表資料 變數名 索引 修改列表資料 變數名 索引 值 元組是一種儲存固定資料的儲存模型。元組具有索引的概念,可以通過索引操作元...