- 信息學奧林匹克競賽初賽精講精練
- 陳文博 常強 陳躍堅
- 441字
- 2021-07-20 11:13:00
第二節 整數存儲
基礎知識
計算機中整數數值的存儲并不是將其簡單地轉為二進制存入內存中即可,因為涉及正負數、減法問題,所以科學家們設計了一套整數的存儲規則——三碼。
原碼
整數存儲的時候,用最高位表示符號(0為正數、1為負數),之后幾位存儲二進制數值,例如:

這樣設計有一個問題,-1+1=1010=-2,怎么辦?
反碼
負數的二進制使用反碼:符號位不變,其他相反。

現在-1+1=1111=-0,可以接受。但是,0和-0的問題呢?
補碼
負數用反碼+1。

現在一切加法都完美了,0也只有一個了。
總結
1)正數的原碼、補碼、反碼都是它本身。
2)負數的反碼為原碼(除符號位)取反,補碼為反碼加一。
3)計算機內存中存儲的是補碼。
4)因為存儲的是補碼,存儲范圍中的負數總比正數多一個(-0的原碼被用來表示最小的負數)。
范例精講
例1 在8位二進制補碼中,10101011表示的數是十進制下的( )。
A. 43
B. -85
C. -43
D. -84
【正確答案】 B
|解析|
注意最高位是1,說明是個負數。
賽題訓練
1.在字長為16位的系統環境下,一個16位帶符號整數的二進制補碼為1111111111101101。其對應的十進制整數應該是( )。
A. 19
B. -19
C. 18
D. -18
推薦閱讀
- INSTANT Mock Testing with PowerMock
- JBoss Weld CDI for Java Platform
- Java程序設計與開發
- 零起步玩轉掌控板與Mind+
- Visual C++數字圖像模式識別技術詳解
- Podman實戰
- PHP 7+MySQL 8動態網站開發從入門到精通(視頻教學版)
- 運維前線:一線運維專家的運維方法、技巧與實踐
- Java Web開發實例大全(基礎卷) (軟件工程師開發大系)
- PyQt編程快速上手
- WildFly Cookbook
- WordPress Search Engine Optimization(Second Edition)
- 跟小樓老師學用Axure RP 9:玩轉產品原型設計
- Learning jqPlot
- Learning RxJava