二進制正負數及0的原碼、反碼、補碼之間的轉化(附標志位解釋)


1、0的原碼反碼補碼
 
  0原碼是00000000
  -0原碼是10000000
 
  0反碼是00000000
  -0反碼是11111111
 
  0補碼是00000000
  補碼沒有正0與負0之分。
 
首先,計算機都是使用二進制的補碼進行計算。
2、二進制
1、正數的二進制原碼、反碼、補碼都是相同的
 
2、負數的二進制原碼:負數的絕對值的二進制的最高位變為1(1是標志位,只用來表示正負,1表示負數,0表示是正數。所以八位二進制的取值范圍是[-127,127]),其余位與正數原碼相同。
比如-32
第一步:32(10)=00100000(2)
第二步:最高位變為1:10100000
 
3、負數的反碼:等於原碼的最高位不變,其余取反。
比如-32
原碼為:10100000
反碼為:11011111
 
4、負數的補碼:等於原碼的最高位不變,其余取反,然后加一。
比如-32
第一步,原碼為:10100000
第二步,最高位不變取反:11011111
第三步,加一得補碼:11100000
 
原碼變成反碼:最高位不變,其余取反
原碼變成補碼:最高位不變,其余取反之后加一。
補碼變成移碼:補碼最高符號位取反就是移碼。
 
 3、定點小數、定點整數和浮點數的范圍
 
(1)16位無符號整數范圍:0 ~ 216-1,即0~65535
(2)16位原碼定點小數范圍 :  -(1-2-15)~+(1-2-15)
(3)16位移碼定點整數范圍:  -215~+(215-1)  即-32768~+32767
(4)16位補碼定點整數范圍:  -215~+(215-1)  即-32768~+32767
下述格式浮點數范圍:關於原點對稱的
最大正數:+0.111 1111*21111 1111=+(1-2-7)*2127
最小正數:+0.100 0000*20000 0000=+2-1*2-128=+2-129
最大負數:-0.100 0000*20000 0000= - 2-1*2-128= - 2-129
最小負數:- 0.111 1111*21111 1111= - (1-2-7)*2127
 
4、標志位解釋
 
1、CF(進位標志) =1 算術操作最高位產生了進位或借位, =0 最高位無進位或借位( CF=1 則說明了有進位或借位,CF=0 則說明了無借位);
2、PF(奇偶標志) =1 數據最低8位中1的個數為偶數 ,=0 數據最低8位中1的個數為奇數 ;
3、AF(輔助進位標志) =1 D3→D4位產生了進位或借位 ,=0 D3→D4位無進位或借位 ;
4、ZF(零標志) =1 操作結果為0,=0 結果不為0;
5、SF(符號標志) =1 結果最高位為1 ,=0 結果最高位為0;
6、OF(溢出標志) =1 此次運算發生了溢出, =0 無溢出。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM