計算機系統基礎學習筆記 整數的補碼編碼(C語言)

2021-10-12 03:31:34 字數 942 閱讀 7189

計算機中整數的編碼往往不是簡單的數值的二進位制表示,最常見的有符號數的計算機表示方式就是補碼,最高位為符號位。

在看補碼之前先了解一下原碼

decimal

binary

decimal

binary

00000

-01000

10001

-11001

20010

-21010

30011

-31011

40100

-41100

最高位是符號位,「0」代表正,「1」代表負,數值部分為十進位制數值對應的二進位制。容易理解,但是缺點明顯,從上表中可以看到0的表示不唯一(0000;1000)不利於程式設計;加減法運算方式不統一;需額外對符號位進行處理,故不利於硬體設計;特別當a學習補碼要先理解有關模運算的概念。在乙個模運算系統中乙個數與它除以「模」後的餘數等價。時鐘就是乙個模十二的系統。

例現在的時間是八點,五小時後是一點

8+5=13 ≡ 1 (mod 12)

同樣有 8-7=1

即 -7≡5 (mod 12)

乙個複數的補碼等於模減去該複數的絕對值。0的補碼表示是唯一的。

當模確定時,乙個數減去小於模的另一數的運算,如a-b,可以轉化為a加-b的模。這樣就實現了加減法的統一,方便計算機實現。計算機中的運算器就是模運算系統。

設運算器有n位,則運算結果只能保留n位,真值的範圍為-2n~2n-1(0的存在使範圍不對稱),可看成是模為2n的鐘錶系統(乙個超大表盤)。

補碼定義:[x]補 =2n+x

正數可以直接根據各位上的權值求出真值。這裡重點記錄負數的求法。最容易理解的方法是將求補碼的過程逆著進行一遍。

更簡單的方法是直接根據補碼上的權值求真值,這樣不用區分正負。最高位權值為負,為-2n-1,其他位正常。

對於負數還可將補碼再次各位取反後加一,得到的就是真值,最後再把符號加上就可以了。

計算機系統基礎

includeint main return 0 如果將表示式換成 2147483647 1 2147483647 結果又會怎麼樣呢 編譯器如何處理字面量 高階語言中運算規則 高階語言與指令之間的對應 機器指令的執行過程 機器級資料的表示和運算 sum int a unsigned int len ...

計算機系統基礎筆記(1)

ia 32 英特爾32位架構。isa 指令集體系結構,簡稱體系結構 系統結構,cpu本身是指令集 結構 的乙個實現 例項。isa是軟體和硬體的介面。intel的isa是ia 32。本課程三個主題 表示 轉換 執行控制流 課程目的 以ia 32 linux c gcc為平台,描述程式執行的底層機制 系...

計算機系統基礎 學習開篇

title 計算機系統基礎 學習開篇 author qian jipeng tags 作為乙個非科班出身的半吊子程式設計師 程式設計師?在和計算機專業的同學交流的過程中,切實感受到知識面的匱乏,總體體現在對計算機系統的理解。確實,作為一名雙非院校信管專業的學生,本身起步就比別人慢了不少,若沒有紮實的...