C語言基礎記憶體區,原碼反碼補碼

2021-08-20 21:14:04 字數 1159 閱讀 9500

c記憶體:

棧:區域性變數、函式形參 由編譯器管理(函式結束,記憶體釋放)

堆: malloc 開闢空間 free 釋放空間 由程式設計師管理

全域性區/靜態儲存區: 全域性變數和靜態變數   編譯器管理: 程式結束,記憶體釋放

常量區:儲存常量  編譯器管理

**區:存放編寫的**  編譯器管理

一般全域性靜態區和常量區都是放在一起的

bit 位元

byte 位元組 = 8bit

word = 4 byte

計算機裡面的計算都是用反碼來計算的

原碼

最高位作為符號位 (0代表正 1代表負)

7    0000 0111        -7    1000 0111

127    0111 1111        -127    1111 1111

反碼

如果為正 與原碼相同 。 如果為負 ,符號位為1,其他與原碼相反

7    0000 0111        -7    1111 1000

補碼

正數 原碼 反碼 補碼 都一樣

負數: 反碼 +1

7    0000 0111        -7    1111 1001

使用反碼求原資料,如上面 -7 除符號位其他各位求反  1000 0110 再加1 就得到了原資料

計算機內正負數都是用補碼來計算的

如上圖我輸出的是十六進製制的-10,實際上輸出的是-10的反碼

-10 原碼 1000  0000 0000 0000 0000 0000 0000 0000 1010

反碼  1111 1111 1111 1111 1111 1111 1111 1111 0101

補碼  1111 1111 1111 1111 1111 1111 1111 1111 0110

f        f        f         f      f        f        f        f        6

如果是+10的話 就是正常輸出  10的16進製為 a

C語言原碼 反碼 補碼

原碼 反碼 補碼 計算機的基本儲存單元是位元組 byte 計算的的最小儲存單元是位 bit c語言當中的數被分為有符號數和無符號數 有符號數是 正數 負數 0 無符號數是 0 不帶符號的正數 對於無符號數和有符號數的0和正數,原碼 反碼 補碼一致 對於有符號數,最高位為符號位,0代表 1代表 對於有...

C語言 原碼 反碼 補碼

c語言 原碼 反碼 補碼 本文以12和 12 為例,簡要介紹正數和負數的原碼 反碼 補碼求解過程 注 本文均以c語言中整數int所佔4位元組32位形式來求解!正數原碼 反碼 補碼 1 求解方法 正數的原碼 反碼 補碼!2 例子 求解12的原碼 反碼和補碼?解 12對應的二進位制形式為 1100 原碼...

C 基礎 原碼 反碼及補碼

以下內容均以8bit值為例進行敘述。資料說是為了方便計算機將減法轉換為加法,計算機中只有加法運算器,但是為什麼使用補碼可以進行轉換?這一步的意義是什麼,以二進位制講解比較抽象,以圓為例進行講解。其實補碼可以用數學中的補數或相反數模擬。如下圖所示圓,原點在圓心,往右為x軸正方向,以圓心為端點的射線與x...