當前位置:編程學習大全網 - 源碼下載 - 數字電路中原碼、補碼、補碼如何化簡?如何把負數轉換成數制?

數字電路中原碼、補碼、補碼如何化簡?如何把負數轉換成數制?

在計算機中,定點有三種表示:原碼、補碼和補碼。

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

反碼表示規定正數的反碼與其原碼相同;負數的求反是對其原始代碼的逐位求反,符號位除外。

補碼的表示規定正數的補碼與其原碼相同;負數的補數是將1加到其補數的最後壹位。

1、原碼、補碼、補碼的表示方法

(1)原碼:直接在值前加壹個符號位的表示。

例如:符號位值位

[+7]Original = 0 0000111 b

[-7]Original = 1 000111 b

註:a .數字0的原始代碼有兩種形式:

[+0]原始= 0000000b [-0]原始= 1000000b

b . 8位二進制源代碼的表示範圍:-127 ~+127。

(2)反代碼:

正數:正數的逆碼與原碼相同。

負數:負數的反碼,符號位為“1”,數值逐位取反。

例如:符號位值位

[+7]anti = 0 0000111 b。

[-7]anti = 1 1111000 b。

註:答:數字0的反碼也有兩種形式,即

[+0] anti =00000000B

[-0]anti = 1111111b。

B.8位二進制補碼的表示範圍:-127 ~+127。

(3)補語的表示方法

1)模數的概念:計量單位稱為模數或模數。比如時鐘以12為基數計數,即模為12。在時鐘上,通過增加(前撥)12的整數位或減去(後撥)12的整數位,時針的位置保持不變。14點在12拆模後變成(下午)2點(14 = 14-12 = 2)。從0: 00逆時針撥10格,即減去10小時,或從0: 00順時針撥2格(0-10 =-10+12 = 2)。所以在模塊12的前提下,-10可以映射到+2。這樣,對於模數為12的循環系統,加2減10的效果是壹樣的;因此,在模數為12的系統中,減法10的所有運算都可以用加法2來代替,這就把減法問題變成了加法問題(註:計算機的硬件結構中只有加法器,所以大部分運算最終都要轉換成加法)。10和2對於模塊12是互補的。

同理,計算機的運算部件和寄存器都有壹定的字長限制(假設字長為8),所以它的運算也是模運算。當計數器滿8位即256時,就會溢出,從頭開始計數。溢出量是計數器的模數。顯然,8位二進制數的模數是28=256。在計算中,兩個互補的數叫做“補數”。

2)補語的表示:

正數:正數的補碼與原碼相同。

負數:負數的補碼是符號位為“1”,數值逐位反轉,然後在最後壹位(最低位)加1。即“反碼+1”。

例如:符號位值位

[+7]補碼= 0 0000111 B。

[-7]補碼= 1 1111001 b。

補碼是微機中壹種重要的編碼形式,請註意:

A.采用補碼後,減法運算可以很容易地轉化為加法運算,運算過程得到簡化。正數的補數是它所代表的數的真值,負數的補數的數值部分不是它所代表的數的真值。采用補碼運算,結果還是補碼。

B.與原碼和補碼不同的是,補碼的值只有壹個0,即[0]補碼=00000000B。

C.如果字長是8位,補碼表示的範圍是-128 ~+127;在進行補碼運算時,要註意結果不能超出補碼所能表示的數的範圍。

2.原碼、補碼、補碼之間的轉換。

因為正數的原碼、補碼、補碼都是壹樣的,不需要轉換。

這裏只分析反面案例。

(1)已知原碼,求補碼。

例:給定某數X的原碼為10110100 b,試求X的補碼和補碼。

解:由[X]primitive = 10110100 b可知X為負。求其補數時,符號位不變,數值部分逐位求反;求其補碼時,將其補碼的最後壹位加1。

10110100原代碼

110010111反轉,符號位不變,數值位反轉。

1 +1

1 1 000 1 1 000

因此:[X]補碼= 11001100 b,[X]反碼= 1101b。

(2)補碼已知時求原碼。

解析:按照求負補碼的逆過程,數值部分應該是最低位減1,然後求逆。但對於二進制數,取反前減1和取反後加1是壹樣的,所以取反後加1的方法還是可以采用的。

例:給定某數X的補碼1111110b,試求其原碼。

解:由[X]補碼= 111011110b可知。

  • 上一篇:網絡安全包括哪些
  • 下一篇:java定義壹個類實現銀行帳戶的概念
  • copyright 2024編程學習大全網