補碼的演算法
A. 怎麼算,補碼運算規則的進位舍棄
首先要掌握「補碼運算」的意義。
就是:用加法器代替減法器,簡化硬體。
因為:作加法,加多了,就可以呈現出減法的作用。
比如兩位十進制,-1 可以用 +99 代替。
24 - 1 = 23
24 + 99 = (1) 23
舍棄進位,只取兩位的結果,那麼,減法就可用加法代替了。
你要注意了,進位,必須舍棄。
誰要討論補碼運算的進位,就是自尋煩惱!
--------------
八位二進制:0000 0000~1111 1111。
相當於十進制:0~255。
此時,-1 就可以用 1111 1111(255) 代替了。
1111 1111(255),就是-1 的補碼。
1111 1110(254),就是-2 的補碼。
。。。。。。
1000 0000(128),就是-128 的補碼。
0~127,還是原來的正數。
--------------
那麼,問題就來了:
正數+正數,如果超出了 127,結果,就是負數。
結果的符號不合理。這就是溢出。
--------------
同理:負數+負數,超出了 255,進位再舍棄,就是正數了。
這也是溢出。
還有:正數-負數、負數-正數,也可能溢出。
能夠產生溢出,只有這四種演算法。
--------------
溢出,就是符號異常。
用二進制數的運算,來判斷進位、溢出,書上都有例題。
B. 計算機的,反碼,原碼,補碼!求它們的計算方法
在計算機系統中,數值,一律用補碼來表示和存放。
原碼和反碼,在計算機中,都是不存在的。
使用補碼代表正負數值,可將負數,轉換成正數來計算。
這就可以節省硬體,只用加法器,便可實現加減法運算。
補碼,是是什麼意思?這得從【補數】談起。
計算機所計算的位數,是固定的,如八位機。。。
位數限定之後,其計數范圍,就有了周期性。
如兩位十進制 0~99,周期就是 100(一百)。
那麼,減一,就可以用 +99 代替:
25 - 1 = 24
25 + 99 = (一百) 24
舍棄進位,只取兩位,這兩種演算法,功能就是相同的。
這就用正數,代替了負數!用加法,就實現了減法運算!
99,就是-1 的補數。計算公式:補數 = 周期 + 負數。
學過三角函數的同學,都知道,函數周期是:2π(360°)。
那麼-90°,也可以+270° 來計算。這也是同樣的道理。
一個負角度,怎麼計算出「等效的正角度」,大家都會。
-------------------------
計算機用二進制,補數,就改稱為:補碼。
八位二進制:0000 0000 ~ 1111 1111。
對應十進制:0 ~ 255。
計數周期是:2^8 = 256。
那麼,
-1 的補碼是 256 + (-1) = 255 = 1111 1111(二進制)。
-2 的補碼是:254 = 1111 1110。
。。。
-128 的補碼是:128 = 1000 0000。
用不存在的「原碼反碼取反加一」來求,也是這個結果。
求負數補碼的計算公式,也是: 周期 + 該負數。
正數,也可以使用這個公式。但是,計算後,這個周期的數值,
超出了計數范圍,就略去了。最後,還是這個正數。
-------------------------
例如: 7-3 = 4。
用補碼的計算過程如下:
7 的補碼=0000 0111
-3的補碼=1111 1101
--相加-------------
得(1)0000 0100= 4 的補碼
舍棄進位,只保留八位作為結果,就求出了 7-3。
-------------------------
原碼和反碼,在計算機中,都是不存在的,無用的。
它們不過是,計算機老師捧在手中的飯碗而已。
C. 補碼.原碼.反碼怎麼運算的啊.詳細一點
計算機中,並沒有原碼反碼,只有補碼。
補碼,是在計算機中,自然形成的,跟原碼反碼毫無關系。
對於補碼,應該直接用二進制來討論,不要繞道並不存在的原碼反碼上去。
以八位機來說明如下。
數字 0,就是用八個位:0000 0000 來存放的。
數字-1,就是用零的二進制,減去一,即:
0000 0000-1 = (1) 1111 1111,
仍存放八個位,就是 1111 1111 (十進制255)。
數字-2,你就再減去一,就是 1111 1110 (=254)。
數字-3,你就再減去一,就是 1111 1101 (=253)。
。。。
-128,就是減 128 次一,最後得 1000 0000 (=128)。
這些就是負數的補碼。
計算公式:256+該負數
=256-對應的正數
-18 的補碼就是:256-18 = 238 = 1110 1110(二進制)。
你用「原碼反碼符號位取反加一」來計算,也一樣是這個結果。
無聊的時候,再探討原碼反碼吧,反正也沒有任何用處。
D. 計算機原碼反碼補碼怎麼算
計算機中,並沒有原碼和反碼,只是使用補碼,代表正負數。
使用補碼的意義:可以把減法或負數,轉換為加法運算。從而簡化計算機的硬體。
------------
比如鍾表,時針轉一圈,周期是 12 小時。
倒撥 3 小時,可以用正撥 9 小時代替。
9,就稱為-3 的補數。
計算方法:12-3 = 9。
對於分針,倒撥 X 分,就可以用正撥 60-X 代替。
------------
如果,限定了兩位十進制數 (0~99),周期就是 100。
那麼,減一,就可以用 +99 代替。
24-1 = 23
24 + 99 = (1) 23
忽略進位,只取兩位數,這兩種演算法,結果就是相同的。
於是,99 就是 -1 的補數。
其它負數的補數,大家可以自己求!
求出了負數的補數,就可用加法,代替減法了。
------------
計算機中使用二進制,補數,就改稱為【補碼】。
常用的八位二進制是:0000 0000~1111 1111。
它們代表了十進制:0~255,周期就是 256。
那麼,-1,就可以用255=1111 1111代替。
所以:-1 的補碼,就是 1111 1111 = 255。
同理:-2 的補碼,就是 1111 1110 = 254。
繼續:-3的補碼,就是 1111 1101 = 253。
。。。
最後:-128,補碼是 1000 0000 = 128。
計算公式:負數的補碼=256+這個負數。
正數,直接運算即可,不需要求補碼。
也可以說,正數本身就是補碼。
------------
補碼的應用如: 7-3 = 4。
用補碼的計算過程如下:
7 的補碼=0000 0111
-3的補碼=1111 1101
--相加-------------
得:(1)0000 0100= 4 的補碼
舍棄進位,只保留八位,作為結果即可。
這就是:使用補碼,加法就代替了減法。
所以,在計算機中,有一個加法器,就夠用了。
原碼和反碼,都沒有這種功能。
------------
原碼和反碼,毫無用處。計算機中,根本就沒有它們。
E. 計算機導論 補碼是怎麼算的啊 看不懂
在計算機系統中,數值,一律採用補碼表示和存放。
在計算機中,並沒有原碼和反碼。
採用補碼的原因是:
藉助於補碼,負數和減法,都可以轉化成加法來進行運算。
那麼,計算機的硬體,就可以簡化了。
因此,在計算機中,只有加法器,並沒有減法器。
------------------------
所謂【補碼】,就是一個【代替負數進行運算的正數】。
補碼是怎麼回事?這得從「補數」談起。
-----------------------
先用十進制來解釋,比較容易理解。
25-1=24
25+99=(一百) 24
如果舍棄進位,那麼,-1,就可以用正數 99 代替、減法也就可以用加法實現了。
這個正數(99),就是負數(-1)的補數。
在這里,用的是 2 位 10 進制,計數周期就是 10^2 = 100。
-1 的補數 +99 是怎麼算出來的?
顯然就是:【-1+周期】。
-----------------------
8 位 2 進制,計數周期是 2^8 = 256。
那麼,-1 的補碼就是:
-1+256 = 255 = 1111 1111(二進制)。
同理:
-2 的補碼,就是:-2 + 256 = 1111 1110;
-3 的補碼,就是:-3 + 256 = 1111 1101;
。。。
-128 的補碼,就是:-128 + 256 = 1000 0000。
以上,就是八位字長,所能代表的 128 個負數。
求負數補碼的通用公式: [X]補 = X + 計數周期。
正數,不用做任何變換。所以,正數,並不存在補碼。
-----------------------
補碼,就是補碼,和原碼反碼,都沒有任何關系。
利用補碼,可以節省一個減法器,而原碼反碼都不具備這種功能。
所以,在計算機中,只是使用補碼,並不用原碼和反碼。
那麼,原碼和反碼有什麼用呢?
那就是計算機老師,捧在手裡的一個碗。。。
-----------------------
舉例說明,如: 5 - 7 = -2。
用補碼計算的過程如下:
5=0000 0101
-7 的補碼=1111 1001
--相加-------------
得(1) 1111 1110= -2 的補碼
舍棄進位,只保留八位,這就實現了 5-7。
F. 二進制補碼怎麼算
1、在計算機系統中,數值一律用補碼來表示(存儲)。 主要原因:使用補碼,可以將符號位和其它位統一處理;同時,減法也可按加法來處理。另外,兩個用補 碼表示的數相加時,如果最高位(符號位)有進位,則進位被舍棄。 2、補碼與原碼的轉換過程幾乎是相同的。 數值的補碼表示也分兩種情況: (1)正數的補碼:與原碼相同。 例如,+9的補碼是00001001。 (2)負數的補碼:符號位為1,其餘位為該數絕對值的原碼按位取反;然後整個數加1。 例如,-7的補碼:因為是負數,則符號位為「1」,整個為10000111;其餘7位為-7的絕對值+7的原碼 0000111按位取反為1111000;再加1,所以-7的補碼是11111001。 已知一個數的補碼,求原碼的操作分兩種情況: (1)如果補碼的符號位為「0」,表示是一個正數,所以補碼就是該數的原碼。 (2)如果補碼的符號位為「1」,表示是一個負數,求原碼的操作可以是:符號位為1,其餘各位取 反,然後再整個數加1。 例如,已知一個補碼為11111001,則原碼是10000111(-7):因為符號位為「1」,表示是一個負 數,所以該位不變,仍為「1」;其餘7位1111001取反後為0000110;再加1,所以是10000111。 在「閑扯原碼、反碼、補碼」文件中,沒有提到一個很重要的概念「模」。我在這里稍微介紹一下「模」 的概念: 「模」是指一個計量系統的計數范圍。如時鍾等。計算機也可以看成一個計量機器,它也有一個計量范 圍,即都存在一個「模」。例如: 時鍾的計量范圍是0~11,模=12。 表示n位的計算機計量范圍是0~2(n)-1,模=2(n)。【註:n表示指數】 「模」實質上是計量器產生「溢出」的量,它的值在計量器上表示不出來,計量器上只能表示出模的 余數。任何有模的計量器,均可化減法為加法運算。 例如: 假設當前時針指向10點,而准確時間是6點,調整時間可有以下兩種撥法: 一種是倒撥4小時,即:10-4=6 另一種是順撥8小時:10+8=12+6=6 在以12模的系統中,加8和減4效果是一樣的,因此凡是減4運算,都可以用加8來代替。 對「模」而言,8和4互為補數。實際上以12模的系統中,11和1,10和2,9和3,7和5,6和6都有這個特 性。共同的特點是兩者相加等於模。 對於計算機,其概念和方法完全一樣。n位計算機,設n=8, 所能表示的最大數是11111111,若再 加1稱為100000000(9位),但因只有8位,最高位1自然丟失。又回了00000000,所以8位二進制系統的 模為2(8)。 在這樣的系統中減法問題也可以化成加法問題,只需把減數用相應的補數表示就可以 了。把補數用到計算機對數的處理上,就是補碼。 另外兩個概念 一的補碼(one's complement) 指的是正數=原碼,負數=反碼 而二的補碼(two's complement) 指的就是通常所指的補碼
G. 計算機中什麼叫補碼啊``` 怎麼算的
補碼,在計算機中,有所應用。
但是,補碼的來源,是由演算法導出的,和計算機無關。
比如,一個小孩,很小的。
他只認識 100 個數,也不會做減法。
那麼,減一,就可以告訴他,用加99 代替:
36 - 1 = 35
36 + 99 = (1) 35
忽略進位,結果不是一樣的嗎?
99,就是-1 的補數。
演算法:補數=模+負數。
其中的「模」,是計數系統中,數字個數的總數。
補碼,也就是二進制的補數。
八位二進制,共有 256 個數字,模,就是 256。
255(1111 1111),就是-1 的補碼;
254(1111 1110),就是-2 的補碼;
... ...
128(1000 0000),就是-128 的補碼。
演算法:
補碼=256 +負數。
正數,直接參加運算即可,用不著轉換。
H. 補碼、原碼、反碼怎麼運算
原碼, 反碼和補碼的概念.對於一個數, 計算機要使用一定的編碼方式進行存儲. 原碼, 反碼, 補碼是機器存儲一個具體數字的編碼方式。原碼就是符號位加上真值的絕對值, 即用第一位表示符號, 其餘位表示值。反碼就是正數的反碼是其本身,負數的反碼是在其原碼的基礎上, 符號位不變,其餘各個位取反。補碼就是正數的補碼就是其本身,負數的補碼是在其原碼的基礎上, 符號位不變, 其餘各位取反。
1. 原碼
原碼就是符號位加上真值的絕對值, 即用第一位表示符號, 其餘位表示值. 比如如果是8位二進制:
[+1]原= 0000 0001
[-1]原= 1000 0001
第一位是符號位. 因為第一位是符號位, 所以8位二進制數的取值范圍就是:
[1111 1111 , 0111 1111]
即
[-127 , 127]
原碼是人腦最容易理解和計算的表示方式。
2. 反碼
反碼的表示方法是:
正數的反碼是其本身
負數的反碼是在其原碼的基礎上, 符號位不變,其餘各個位取反。
[+1] = [00000001]原= [00000001]反
[-1] = [10000001]原= [11111110]反
可見如果一個反碼表示的是負數, 人腦無法直觀的看出來它的數值. 通常要將其轉換成原碼再計算。
3. 補碼
補碼的表示方法是:
正數的補碼就是其本身
負數的補碼是在其原碼的基礎上, 符號位不變, 其餘各位取反, 最後+1. (即在反碼的基礎上+1)
[+1] = [00000001]原= [00000001]反= [00000001]補
[-1] = [10000001]原= [11111110]反= [11111111]補
對於負數,補碼表示方式也是人腦無法直觀看出其數值的。通常也需要轉換成原碼在計算其數值。
I. 知道 補碼,如何 計算 原碼
兩種計算方法:
演算法1: 補碼=原碼取反再加1的逆運算
10010110是補碼,應先減去1變為反碼,得10010101;
由反碼取得源碼即除符號位外其他為按位取反,得11101010,即十進制數的-106
演算法2:負數補碼速演算法,由最低位(右)向高位(左)查找到第一個1與符號位之間的所有數字按位取反的逆運算
10010110是補碼,符號位與最後一個1之間的所有數字按位取反,得11101010
兩種演算法得出同樣結果
J. 負數的補碼怎麼求 負數的補碼計算方法
在計算機系統中,數值,一律採用補碼表示和存儲。
在計算機中,原碼和反碼,都是不存在的。
求補碼,也用不著它們。
所以,原碼和反碼,根本就沒有用!
------------------------
補碼,其實,就是一個「代替負數做運算」的正數。
且看 2 位 10 進制數的運算:
25 - 1 = 24
25 + 99 = (一百) 24
你舍棄進位,只取兩位,這兩種演算法,功能就完全相同。
那麼,+99,就代替了-1。加法,也就代替了減法。
這不就是用正數(補數)代替了負數嗎?
由負數求對應的補數,計算公式是: 補數 = 負數 + 10^n。
式中: n 是補數的位數。
10^n 是 n 位 10 進制數的計數周期。
-------------------------
計算機用二進制,補數,就改稱為:補碼。
計算機所能計算的位數,是固定的,如八位機、16 位。。。
八位二進制是:0000 0000~1111 1111 (十進制 255)。
八位二進制的計數周期,是:2^8 = 256。
求負數補碼的計算公式,也是: 負數 + 周期。
-1 補碼就是:-1 + 256 = 255 = 1111 1111(二進制)。
-2 補碼就是:-2 + 256 = 254 = 1111 1110(二進制)。
。。。
-128 補碼就是:128 = 1000 0000(二進制)。
正數,必須直接參加運算,不許轉換。
所以,正數不存在補碼。
求補碼,根本就不用「原碼反碼符號位取反加一」。
-------------------------
舉例說明,用八位補碼計算: 5 - 7 = -2。
5 = 0000 0101
-7 的補碼= 1111 1001
--相加-------------
得 (1) 1111 1110 = -2 的補碼
舍棄進位,只保留八位,這就用加法,實現了 5-7。