二進制的原碼、反碼和補碼


數在計算機中是以二進制形式表示的,分為有符號數和無符號數。

原碼、反碼、補碼都是有符號定點數的表示方法。

一個有符號定點數的最高位為符號位,0是正,1是副。

1.原碼就是這個數本身的二進制形式。

例如:0000001 就是+1 1000001 就是-1   

2.正數的反碼和補碼都是和原碼相同。

負數的反碼是將其原碼除符號位之外的各位求反。

[-3]反=[10000011]反=11111100  

負數的補碼是將其原碼除符號位之外的各位求反之后在末位再加1。

[-3]補=[10000011]補=11111101  

一個數和它的補碼是可逆的。

3.設立補碼的原因有兩個:

第一是為了能讓計算機執行減法:[a-b]補=a補+ (-b)補

第二個原因是為了統正0和負0正零: 00000000 負零: 10000000

這兩個數其實都是0,他們的原碼卻有不同的表示,但是他們的補碼是樣的, 都是0000000

那么,000000這個補碼表示的哪個數的補到呢?

其實這是一個規定,這個數表示的是-128  所以n位補碼能表示的范圍是  -2^(n-1)到2^(n-1)-1  比n位原碼能表示的數多一個.

4.總結:

在計算機內,定點數有3種表示法:原碼、反碼和補碼

所謂原碼就是前面所介紹的二進制定點表示法,即最高位為符號位,“0” 表示正,“1” 表示負,其余位表示數值的大小。

反碼表示法規定:正數的反碼與其原碼相同;負數的反碼是對其原碼逐位取反,但符號位除外。

補碼表示法規定:正數的補碼與其原碼相同:負數的補碼是在其反碼的求位加1。


免責聲明!

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



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