當前位置:編程學習大全網 - 源碼下載 - 原碼,反碼和補碼表示的規則分別是什麽

原碼,反碼和補碼表示的規則分別是什麽

數在計算機中是以二進制形式表示的。

數分為有符號數和無符號數。

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

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

以下都以8位整數為例,

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

例如

0000001

就是+1

1000001

就是-1

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

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

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

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

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

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

為什麽要設立補碼呢?

第壹是為了能讓計算機執行減法:

[a-b]補=a補+(-b)補

第二個原因是為了統壹正0和負0

正零:00000000

負零:10000000

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

但是他們的補碼是壹樣的,都是00000000

特別註意,如果+1之後有進位的,要壹直往前進位,包括符號位!(這和反碼是不同的!)

[10000000]補

=[10000000]反+1

=11111111+1

=(1)00000000

=00000000(最高位溢出了,符號位變成了0)

有人會問

10000000這個補碼表示的哪個數的補碼呢?

其實這是壹個規定,這個數表示的是-128

所以n位補碼能表示的範圍是

-2^(n-1)到2^(n-1)-1

比n位原碼能表示的數多壹個

又例:

1011

原碼:01011

反碼:01011

//正數時,反碼=原碼

補碼:01011

//正數時,補碼=原碼

-1011

原碼:11011

反碼:10100

//負數時,反碼為原碼取反

補碼:10101

//負數時,補碼為原碼取反+1

0.1101

原碼:0.1101

反碼:0.1101

//正數時,反碼=原碼

補碼:0.1101

//正數時,補碼=原碼

-0.1101

原碼:1.1101

反碼:1.0010

//負數時,反碼為原碼取反

補碼:1.0011

//負數時,補碼為原碼取反+1

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

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

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

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

  • 上一篇:綠色軟件聯盟的特色
  • 下一篇:電視版的《名偵探柯南》中有壹集,集美和子說她最喜歡的人在尋找壹個題材。
  • copyright 2024編程學習大全網