當前位置:首頁 » 操作系統 » 補碼的演算法

補碼的演算法

發布時間: 2022-11-13 10:58:07

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。

熱點內容
華為如何用電腦解鎖手機密碼 發布:2024-05-04 14:54:38 瀏覽:574
斐波那契數列的遞歸演算法 發布:2024-05-04 14:34:55 瀏覽:969
數字支付密碼哪裡找 發布:2024-05-04 14:26:50 瀏覽:86
天翼雲免費存儲 發布:2024-05-04 14:22:55 瀏覽:782
微信56g緩存怎麼解決 發布:2024-05-04 14:09:41 瀏覽:707
sqlupdatewhereand 發布:2024-05-04 13:55:47 瀏覽:586
java視頻教程推薦 發布:2024-05-04 13:55:08 瀏覽:86
安卓官服閃耀暖暖怎麼換 發布:2024-05-04 13:46:37 瀏覽:171
我的世界精靈伺服器怎麼抓寵物 發布:2024-05-04 13:28:54 瀏覽:960
編譯androidwebkit 發布:2024-05-04 13:11:37 瀏覽:761