1樓:節海菡師茂
1補碼注意:此處的'=='是相等的意思。'='是賦值的意思。
在機器世界裡:
正數的最高位是符號位0,負數的最高位是符號位1。
對於正數:反碼==補碼==原碼。
對於負數:反碼==除符號位以外的各位取反。
補碼==反碼+1.
原碼==補碼-1後的反碼==補碼的反碼+1。(讀完本文後,應該能夠直觀地認識到本式的正確性)
可以輕易發現如下規律:
自然計算 :a-b==c.
計算機計算:a-b==a+b的補碼==d.
c的補碼是d.
通過此法,可以把減法運算轉換為加法運算。
所以補碼的設計目的是:
1.使符號位能與有效值部分一起參加運算,從而簡化運算規則.
2.減運算轉換為加運算,進一步簡化計算機中運算器的線路設計.
2樓:東星津風長
補碼用[x]表示機器數(原碼),x是真值(二進位制)
x=+0.1001,則[x]原=0.1001
x=-0.1001,則[x]原=1.1001
對於0,原碼中有「+0」、「-0」之分,故有兩種形式:
[+0]原=0.000...0
[-0]原=1.000...0
採用原碼錶示法簡單易懂,但它的最大缺點是加法運算複雜。這是因為,當兩數相加時,如果是同號則數值相加;如果是異號,則要進行減法。而在進行減法時還要比較絕對值的大小,然後大數減去小數,最後還要給結果選擇符號。
為了解決這些矛盾,人們找到了補碼錶示法。機器數的補碼可由原碼得到。如果機器數是正數,則該機器數的補碼與原碼一樣;如果機器數是負數,則該機器數的補碼是對它的原碼(除符號位外)各位取反,並在未位加1而得到的。
負數用補碼錶示時,可以把減法轉化為加法。這樣,在計算機中實現起來就比較方便
[x]補={x
1>x≥0
{2+x=2-|x|
0≥x≥-1
x=+0.1011,則[x]補=0.1011
x=-0.1011,則[x]補=10+x=10.0000-0.1011=1.0101
對於0,[+0]補=[-0]補=0.0000
(mod
2)例子中是以定點小數為例。
補碼的原理可以用鐘錶來描述
如設標準時間為4點正;一隻表已經7點了,為了校準時間,可以採用兩種方法:一是將時針退
7-4=3
格;一是將時針向前撥12-3=9格。即7-3和7+9(mod12)等價,因此,把負數用補碼錶示的mod2操作,可以把減法轉化為加法。
3樓:沙裡波特
負數,存放在計算機中,就稱為:補碼。
--------------
時鐘的時針,週期是 12小時。
倒撥 3小時,也可以用正撥 9小時來代替。
9,就是-3 的補數。 補數=週期+負數。
分針倒撥 x分,也可用正撥 60-x代替。
60,是週期。
如果使用兩位十進位制數 0~99,共 100 個數,週期就是一百。
減一,就可以用 +99 代替:
28 - 1 = 27
28 + 99 = (1) 27
忽略進位(一百),兩種演算法的結果,就是相同的。
於是,99,就是-1 的補數;
同理,98,就是-2 的補數;
利用【補數】,就可把「負數」改為「正數」。
利用【補數】,就可把「相減」運算,改為「相加」。
求-1 【補數】的計算方法是:
週期 + 負數 = 100 - 1 = 99。
其他負數,也可用此公式計算。
計算機中,沒有數字。 1 和 0,都是**。
八位二進位制,稱為一個位元組。
0000 0000~1111 1111,共 256 個**。
對應的十進位制是:0~255。週期就是 256。
-1,就可以用 255 = 1111 1111 (二進位制) 代替,
-2,就可以用 254 = 1111 1110 (二進位制) 代替,
那麼,1111 1111 就稱為-1 的補碼;
同理,1111 1110 也就是-2 的補碼。
補碼的定義式,如下:
負數的補碼,就是:週期,加上該負數。
正數,沒有補碼。必須直接運算,不可變換。
求補碼,並不涉及「原碼反碼符號位 」這些垃圾知識。
原碼反碼,在計算機中,都是不存在的。
-------------
補碼,有什麼意義?
藉助於補碼,就能用加法,代替減法運算。
那麼,計算機中,只需要有一個加法器即可。
這就簡化了硬體。
原碼和反碼,並沒有這種功能。
所以,計算機中,只是使用補碼。
原碼反碼,在計算機中,都不存在,根本就不需要討論。
什麼叫做補碼?
4樓:
補碼是用來解決負數在計算機中的表示問題的。正數的補碼就是其本身;負數的補碼是在其原碼的基礎上, 符號位不變, 其餘各位取反, 最後+1. (即在反碼的基礎上+1)。
例:1-1 = 1+(-1) = 00000001(原碼) + 100000001(原碼) =00000001(反碼) +11111110(反碼) = 11111111(反碼)=10000000(原碼) = -0
用反碼運算時,結果為-0,雖然+0和-0都是0,但是看起來總是覺得怪怪的,何況0帶符號沒有任何意義,並且出現了兩個能表示0的二進位制數00000000和10000000。
這讓嚴謹的程式設計師們如何能接受,為了消除歧義,於是出現了反碼。
擴充套件資料
補碼這個編碼方案要解決的是如何在機器中表示負數,其本質意義為用一個正數來表示這個正數對應的負數。所謂-20的補碼是指:如何在機器中用補碼形式表示-20。
具體過程是這樣的:將20的二進位制形式直接寫出00010100,然後所有位取反變成11101011,再加1變成了11101100。最簡單的補碼轉換方式,不必去理會轉換過程中的符號位,只關注轉換前和最終轉換後的符號位就行。
補碼的總前提是機器數,不要忘了機器數的符號位含義,最高位為0表示正數,最高位為1表示負數,而最高位是指機器字長的最左邊一位。位元組數100b,最高位為00000100中的最左邊的0。
5樓:沙裡波特
補碼,應該是最容易理解的知識了。
小學生都可以自己摸索出來。
按照四位二進位制來說,共有 16 組**。
數字 0 的二進位制,就是 0000,
數字 1 的二進位制,就是 0001,
數字 7 的二進位制,就是 0111。
可見下表:
零和正數的補碼
負數怎麼辦?
就從 0000,依次向下減,就行了。那麼:
數字-1 的二進位制,就是 0000-1 = (1) 1111 = 15(十進位制)。
(括號中的 1,是借位,捨棄不要了。)
數字-2 的二進位制,就是 1111-1 = 1110 = 14。
數字-3 的二進位制,就是 1110-1 = 1101 = 13。
數字-8 的二進位制,就是 1000 = 8(十進位制)。
(別再減了。再減,就是 0111 = +7 了。)
可見下表:
負數的補碼
綜合到一起,就是-8~+7 的四位補碼。見下表:
四位補碼
總結:
零和正數的補碼,就是數字本身(也可轉為二進位制)。
負數的補碼,就是: 16+這個負數。
(如果是 8 位二進位制,就改用: 256 + 這個負數。)
整個推算過程,並不需要使用「原碼反碼符號位」這些垃圾。
計算時,使用十進位制,簡單方便。得出的補碼,當然也是十進位制。
如果需要二進位制,就變換一下。
補碼,很難嗎?
如果不涉及原碼反碼符號位,就一點也不難。
-----------
補碼有什麼用呢?
利用補碼,可以把減法運算,轉換成加法。
(所以,在計算機中,有一個加法器,就夠用了。)
例如:6-2 = 4,用補碼運算如下:
6 的補碼是 0110、-2 的補碼是 1110。
0110 + 1110 = (1) 0100 (= 4 的補碼)
(括號中的 1,是進位,捨棄不要了。)
注意:
如果運算結果超出了-8~+7 的範圍,結果將是錯的。
這種現象稱為「溢位」。
再注意一下:進位,並不等於溢位。
---------
因為補碼的這個特性,所以,在計算機中,只是使用補碼存放資料。
而原碼反碼,在計算機中,都是不存在的。
原碼反碼的用途,只是用於「筆算」。
其實,筆算的方法,並非只有「取反加一」。
原碼反碼,只是磚家為了增加收入,瞎編的垃圾而已。
所以,大家,完全不必在原碼反碼 上浪費時間精力。
但是,考試怎麼辦?
呃 ...,千萬別跟老師較勁,他怎麼講,你就怎麼答吧。
6樓:
0的補碼是00000000。
假設機器的位長為0,正數x的最高位為0,其餘位為數x的值
(8位長為例)
[+0]補= 0 000 000
負數x的補碼錶示為2^n-|x|
[-0]補 = 2^n = 10000 0000 = 0000 0000
綜合[0]補=0000 0000
計算機中的符號數有三種表示方法,即原碼、反碼和補碼。三種表示方法均有符號位和數值位兩部分,符號位都是用0表示「正」,用1表示「負」,而數值位,三種表示方法各不相同。
在計算機系統中,數值一律用補碼來表示和儲存。原因在於,使用補碼,可以將符號位和數值域統一處理;同時,加法和減法也可以統一處理。此外,補碼與原碼相互轉換,其運算過程是相同的,不需要額外的硬體電路。
求給定數值的補碼分以下兩種情況:
正數正整數的補碼是其二進位制表示,與原碼相同
負數求負整數的補碼,將其對應正數二進位制表示所有位取反(包括符號位,0變1,1變0)後加1 。
同一個數字在不同的補碼錶示形式中是不同的。比如-15的補碼,在8位二進位制中是11110001,然而在16位二進位制補碼錶示中,就是1111111111110001。以下都使用8位2進位制來表示。
7樓:做而論道
計算機裡面,只有加法器,沒有減法器,
減法,必須用加法來完成。
對於 100 以內的十進位制數,《減1》,就可以用《加 99》代替。
比如 25 - 1 = 24,可以寫成 25 + 99 = (1)24。
限定了兩位數,-1 和 +99 是等效的。
同樣,-2,可以用 +98 代替。
……它們之間,稱為《補數》。
100 稱為《模》。
利用《模》,求某個負數的《補數》,小學生都會。
---------------------------對於 8 位二進位制數:0000 0000~1111 1111(255),模為256。
-1,可以用 255(1111 1111)代替。
-2,可以用 254(1111 1110)代替。
……這些二進位制數,就稱為負數的《補碼》。
已知一個負數,求其補碼,用模計算一下,大家都能算出來。
求補碼,完全可以用十進位制數來計算。
原碼、反碼、求反加
一、符號位,這些都是用不著的,瞎忽悠人的。
什麼叫做是什麼意思,svc是什麼意思
svc是switching virtual circuit的縮寫,意思是交換虛擬電路。資訊包交換虛擬線路 節點之間只在需要傳送資料時才建立邏輯連結 面向連線的網路中,從一臺計算機到另一臺計算機的連線。svc是虛擬的,因為路徑是從路由表中得到的,而不是建立物理線路。svc是交換的,因為它能按需要建立,...
什麼是原碼 反碼 補碼 移碼 crc迴圈冗餘碼
原碼 反碼和補碼 在計算機內,定點數有3種表示法 原碼 反碼和補碼所謂原碼就是前面所介紹的二進位制定點表示法,即最高位為符號位,0 表示正,1 表示負,其餘位表示數值的大小。反碼錶示法規定 正數的反碼與其原碼相同 負數的反碼是對其原碼逐位取反,但符號位除外。補碼錶示法規定 正數的補碼與其原碼相同 負...
什麼叫做審計,審計是什麼意思
高頓教育 審計師是專門從事檢查並進一步證實公司會計賬目和報告的正確性 合理性和可接受性的專業人員。審計是什麼意思? 高頓財經教育 審計師是專門從事檢查並進一步證實公司會計賬目和報告的正確性 合理性和可接受性的專業人員。審計到底是做什麼的? 註冊會計師 審計的工作一般包括哪些 審計就是對被審計單位的經...