一、原碼
對于有符號數:原碼就是符號位加上真值的絕對值, 即用第一位表示符號, 其余位表示值,
例如:5

原碼的二進制:0000 0101
例如:-5
原碼的二進制:1000 0101
對于無符號數:原碼就是真值,
例如:5 原始碼的二進制:0000 0101
在計算機中,可以區分正負的型別,稱為有符型別,無正負的型別(只有正值),稱為無符型別;所以無符號數無法表示負數
二、反碼
正數的反碼:是其本身
例如:5
原碼:0000 0101
反碼:0000 0101
負數的反碼:在其原碼的基礎上, 符號位不變,其余各個位取反.
例如:-5
原碼:1000 0101
反碼:1111 1010
三、補碼
正數的補碼:是其本身
例如:5
原碼:0000 0101
反碼:0000 0101
補碼:0000 0101
負數的補碼:在其原碼的基礎上, 符號位不變, 其余各位取反, 最后+1. (即在反碼的基礎上+1)
例如:-5
原碼:1000 0101
反碼:1111 1010
補碼:=反碼+1=1111 1010 +1 =1111 1011=251
例如:-1
原碼:1000 0001
反碼:1111 11110
補碼:1111 11111 =255
四、補碼轉原始碼
正數:補碼與原碼相等 所以無需轉換
負數補碼轉原始碼:在補碼的基礎上, 符號位不變, 其余各位取反, 最后+1. (即在反碼的基礎上+1)
補碼:1111 1101
反碼:1000 0010
原碼:1000 0011=-3
五、計算機采用補碼的意義
計算機通常用補碼來表示有符號數,計算機的一個資料可以看作是有符號數,也可以看作無符號數的,也就是說計算機并不知道你存的是有符號數還是無符號數,而且所做的運算并不需要管你存的是什么數
- 原因:簡化計算機基本運算電路,使加減法都只需要用加法電路實作,用加法替代減法,例如:2-1 =2+(-1);
- 目的:為了簡化計算機基本運算電路,使加減法都只需要通過加法電路實作,也就是讓減去一個正數或加上一個負數這樣的運算可以用加上一個正數來代替,于是改變負數存盤的形式,存盤成一種可以直接當成正數來相加的形式,這種形式就是補碼,
1、原碼計算加減法:加法正確 ,但是減法的結果錯誤

2、反碼計算加減法:加法與減法結果都是正確的

3、使用補碼計算加減法:加法與減法結果都是正確的,并且解決了-0 的問題

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/213217.html
標籤:其他
