計算機最本質的功能-數據存儲和計算

原碼是什麼?

原碼就是早期用來表示數字的一種方式: 一個正數,轉換爲二進制位就是這個正數的原碼。負數的絕對值轉換成二進制位然後在高位補1就是這個負數的原碼

舉例說明:

int類型的 3 的原碼是 11B(B表示二進制位), 在32位機器上佔四個字節,那麼高位補零就得:

00000000 00000000 00000000 00000011

int類型的 -3 的絕對值的二進制位就是上面的 11B 展開後高位補零就得:

10000000 00000000 00000000 00000011

但是原碼有幾個缺點,零分兩種 +0 和 -0 。很奇怪是吧!還有,在進行不同符號的加法運算或者同符號的減法運算的時候,不能直接判斷出結果的正負。你需要將兩個值的絕對值進行比較,然後進行加減操作 ,最後符號位由絕對值大的決定。於是反碼就產生了。

反碼是什麼 ?

正數的反碼就是原碼,負數的反碼等於原碼除符號位以外所有的位取反

舉例說明:

int類型的 3 的反碼是

00000000 00000000 00000000 00000011

和原碼一樣沒什麼可說的

int類型的 -3 的反碼是

11111111 11111111 11111111 11111100

除開符號位 所有位 取反

解決了加減運算的問題,但還是有正負零之分,然後就到補碼了

補碼是什麼?

正數的補碼與原碼相同,負數的補碼爲 其原碼除符號位外所有位取反(得到反碼了),然後最低位加1.

還是舉例說明:

int類型的 3 的補碼是:

00000000 00000000 00000000 00000011

int類型的 -3 的補碼是

11111111 11111111 1111111 11111101

就是其反碼加1

公衆號

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章