深度學習資料在記憶體中的儲存 C C

2021-10-10 18:26:09 字數 2953 閱讀 1736

*資料型別分類

1.整形

short //------------------------短整型(2 byte)

unsigned short [int] // 無符號位

signed short [int] //有符號位·

int //---------------------------整形(4 byte)

unsigned int

signed int

long //------------------------長整型(8 byte)

unsigned long [int]

signed long [int]

char //----------------------字元資料型別(1 byte)

unsigned char

signed char

2.浮點型

float //------(4 byte)

double//------(8 byte)

3.指標型別

int *pi;

char *pc;

float *pf;

void *pv;//-----(不能解引用和加減操作)

4.構造型別

陣列型別

結構體型別 struct

列舉型別 enum

聯合型別 union

5.空型別

void表示空型別(無型別)

*整形在記憶體中的儲存

原碼、反碼、補碼

計算機中的有符號數有三種表示方法,即原碼、反碼和補碼。

三種表示方法均有符號位數值位兩部分,符號位都是用0表示「正」,用1表示「負」,而數值位三種表示方法各不相同。

《原碼》

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

《反碼》

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

《補碼》

反碼+1就得到補碼

正數的原、反、補都一樣的

負數按照上面方法計算,並且負數在記憶體中以補碼的形式儲存

在計算機系統中,數值一律用補碼來表示和儲存。原因在於,使用補碼,可以將符號位和數值域統一處理; 同時,加法和減法也可以統一處理(cpu只有加法器)此外,補碼與原碼相互轉換,其運算過程是相同的,不需 要額外的硬體電路。

資料子記憶體中的儲存:

#include

intmain()

(1).x在記憶體中的儲存:

(2).y在記憶體中的儲存:

大小端介紹

計算機電路先處理低位位元組,效率比較高,因為計算都是從低位開始的,所以,計算機的內部處理都是小端位元組序。但是,人類還是習慣讀寫大端位元組序,所以,除了計算機的內部處理,其他的場合幾乎都是大端位元組序,比如網路傳輸和檔案儲存。

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

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

為什麼會有大小端模式之分呢?

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

*浮點型在記憶體中的儲存

常見的浮點數:

3.14159 1e10 浮點數家族包括: float、double、long double 型別。 浮點數表示的範圍:float.h中定義

舉例來說: 十進位制的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。

如:float x=9.0f;

深度解析資料在記憶體中的儲存

整形家族 char 字元資料型別 short 短整形 int 整形 long 長整形 long long 更長的整形 浮點數家族 float 單精度浮點數 double 雙精度浮點型 它們的大小決定了使用範圍,根據不同的型別開闢相應的記憶體空間。構造型別 1.陣列型別 2.結構體型別 struct ...

深度剖析資料在記憶體中的儲存

我們要想知道資料如何在記憶體中的儲存,就必須先談談資料型別的意義 1 如果我們把記憶體看成乙個個房間,那麼資料型別就決定了房間號和房間大小,這樣應該很好理解了吧 接下來我們來談談資料型別的分類 1 整形家族 char 有符號字元型,只不過把signed省略了 unsigned char 無符號型別字...

資料在記憶體中的儲存

身為乙個天天處理資料的人,不得不說資料在記憶體中的儲存是必須要知道的問題。首先,資料在記憶體中的儲存涉及到作用域,儲存位置等方面的問題。根據資料的作用域,可將資料劃分為區域性變數和全域性變數 區域性變數的作用域為從定義開始到函式執行結束 全域性變數的作用域從程式開始到程式結束。計算機的記憶體分配可以...