導航:首頁 > 源碼編譯 > 反碼演算法

反碼演算法

發布時間:2023-05-12 07:21:51

① 二進制的反碼怎麼算

二進制的反碼演算法如下:

反碼:正數的反碼還是等於原碼;負數的反碼就是它的原碼除符號位外,按位取反。

兩個數進行二進制反碼求和的運算,它的規則是從低位到高位逐列進行計算。0和0相加是0但要產生一個進位1,0和1相加是1,1和1相加是0。若最高位相加後產生進位,則最後得到的結果要加1。

舉例:已知X = + 1101 , Y = + 0110 , 用反碼計算Z = X-Y。

[X]反 = 01101

[-Y]反 = 11001

則[Z]反 =[X]反+[-Y]反 = 01101+11001+1(循環進位)= 00111

其真值為Z = +0111

運算注意事項

原碼的求解規則

正數:就是它對應的二進制數。

負數:將絕對值對應的二進制最左邊位變為1。

所以-11的原碼就是10001011。

備註:最左邊是符號位,0表示正數,1表示負數,下同。

反碼的求解規則

正數:和原碼相同,也就碰伍是對應的二進制數。

負數:將原碼符號位之外的數字取反,即0變1,1為0。

所以-11的反碼是11110100。

補碼的求解規則

正數:和反碼相同,也就是對應的二進制數。

負數:將反碼的最後一位加1。

所以-11的補碼就是11110101。

② 一個數的原碼,反碼,補碼怎麼算

計算機中的存儲系統都是用2進制儲存的,對我們輸入的每一個信息它都會自動轉變成二進制的形式,而二進制在存儲的時候就會用到原碼,反碼和補碼例如:輸入25原碼是:0000000000011001反碼: 1111111111100110 補碼: 1111111111100111

數值在計算機中表示形式為機器數,計算機只能識別0和1,使用的是二進制,而在日常生活中人們使用的是十進制,"正如亞里士多德早就指出的那樣,今天十進制的廣泛採用,只不過我們絕大多數人生來具有10個手指頭這個解剖學事實的結果.盡管在歷史上手指計數(5,10進制)的實踐要比二或三進制計數出現的晚. "(摘自<<數學發展史>>有空大家可以看看哦~,很有意思的).為了能方便的與二進制轉換,就使用了十六進制(2 4)和八進制(23).下面進入正題.

數值有正負之分,計算機就用一個數的最高位存放符號(0為正,1為負).這就是機器數的原碼了.假設機器能處理的位數為8.即字長為1byte,原碼能表示數值的范圍為

(-127~-0 +0~127)共256個.

有了數值的表示方法就可以對數進行算術運算.但是很快就發現用帶符號位的原碼進行乘除運算時結果正確,而在加減運算的時候就出現了問題,如下: 假設字長為8bits

( 1 ) 10- ( 1 )10 = ( 1 )10 + ( -1 )10 = ( 0 )10

(00000001)原 + (10000001)原 = (10000010)原 = ( -2 ) 顯然不正確.

因為在兩個整數的加法運算中是沒有問題的,於是就發現問題出現在帶符號位的負數身上,對除符號位外的其餘各位逐位取反就產生了反碼.反碼的取值空間和原碼相同且一一對應. 下面是反碼的減法運算:

( 1 )10 - ( 1 ) 10= ( 1 ) 10+ ( -1 ) 10= ( 0 )10

(00000001) 反+ (11111110)反 = (11111111)反 = ( -0 ) 有問題.

( 1 )10 - ( 2)10 = ( 1 )10 + ( -2 )10 = ( -1 )10

(00000001) 反+ (11111101)反 = (11111110)反 = ( -1 ) 正確

問題出現在(+0)和(-0)上,在人們的計算概念中零是沒有正負之分的.(印度人首先將零作為標記並放入運算之中,包含有零號的印度數學和十進制計數對人類文明的貢獻極大).

於是就引入了補碼概念. 負數的補碼就是對反碼加一,而正數不變,正數的原碼反碼補碼是一樣的.在補碼中用(-128)代替了(-0),所以補碼的表示範圍為:

(-128~0~127)共256個.

注意:(-128)沒有相對應的原碼和反碼, (-128) = (10000000) 補碼的加減運算如下:

( 1 ) 10- ( 1 ) 10= ( 1 )10 + ( -1 )10 = ( 0 )10

(00000001)補 + (11111111)補 = (00000000)補 = ( 0 ) 正確

( 1 ) 10- ( 2) 10= ( 1 )10 + ( -2 )10 = ( -1 )10

(00000001) 補+ (11111110) 補= (11111111)補 = ( -1 ) 正確

所以補碼的設計目的是:

⑴使符號位能與有效值部分一起參加運算,從而簡化運算規則.

⑵使減法運算轉換為加法運算,進一步簡化計算機中運算器的線路設計

所有這些轉換都是在計算機的最底層進行的,而在我們使用的匯編、C等其他高級語言中使用的都是原碼

③ 原碼,補碼,反碼都是什麼意思,怎麼算啊

把十進制數轉換成二進制數後,二進制數就是原碼
例如:十進制:2 -----> 二進制:10
「二進制:10「就是原碼
為了湊夠8位,在二進制10前面加6個0,變成00000010
2的原碼:00000010
2的反碼:00000010
2的補碼:00000010
也就是,正數的原碼,反碼,補碼都相同
下面是負數的原碼、反碼、和補碼:
3的原碼:00000011 -3的原碼:10000011 也就是最左邊的那個數表示正負,0代表正,1代表負,它也叫符號位
-3的原碼:10000011
-3的反碼:11111100 負數的反碼是對其原碼按位取反,符號位不變
-3的補碼:11111101 負數的補碼是在其反碼的末位加1
計算機用補碼計算

④ 一個數的原碼,反碼,補碼怎麼算

數字,存在計算機中,就是「碼」。

在計算機中,沒有原碼和反碼。

計算機,只是使用「補碼」來存放「正負數」。

以八位為例:

數字 0 的存放形式是:0000 0000。

數字+1,就是加上一:0000 0001。

數字+2,就再加上一:0000 0010。

數字+3,就依此類推:0000 0011。

... ... 依次加一,即可。

----------

負數,就是依次減一。

數字 0 的存放形式是:0000 0000。

數字-1,就是減一:0000 0000-1,

只保留八位,可得:1111 1111(=255)。

數字-2,就再減一:1111 1110(=254)。

數字-3,繼續減一:1111 1101(=253)。

... ... 然後你就依次減一吧 ... ...

----------

以上,是計算機中的補碼。

---------

八位補碼的表示範圍:-128~+127。

八位補碼的計算公式:

正數的補碼:就是正數本身。

負數的補碼:256-該負數。

(如果需要二進制,你就再轉換一下。)

---------

補碼,完全是由二進制加一減一自然形成的,和原碼反碼沒有任何關系。

計算機中,也沒有原碼和反碼。

所以,原碼和反碼,都沒有任何用處。

⑤ 計算機原碼反碼補碼怎麼算

計算機原碼反碼補碼計算方法:

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]補

對於負數,補碼表示方式也是人腦無法直觀看出其數值的。通常也需要轉換成原碼在計算其數值。

(5)反碼演算法擴展閱讀:

原碼,反碼和補碼是完全不同的。既然原碼才是被人腦直接識別並用於計算表示方式,為何還會有反碼和補碼呢?

首先,因為人腦可以知道第一位是符號位,在計算的時候我們會根據符號位,選擇對真值區域的加減。但是對於計算機,加減乘數已經是最基礎的運算,要設計的盡量簡單。計算機辨別"符號位"顯然會讓計算機的基礎電路設計變得十分復雜。於是人們想出了將符號位也參與運算的方法。我們知道,根據運演算法則減去一個正數等於加上一個負數,即: 1-1 = 1 + (-1) = 0 , 所以機器可以只有加法而沒有減法,這樣計算機運算的設計就更簡單了。

於是人們開始探索將符號位參與運算,並且只保留加法的方法。

⑥ 二進制數反碼和補碼的演算法

計算機里的二進制數有八位、十六位等,下面以八位為例
19的二進制數為:0001
0011
那麼+19
原碼為
0001
0011
反碼為
0001
0011
補碼為
0001
0011
那麼-19
原碼為
1001
0011
(左邊第一位表示正負數,正數為0,負數為1)
反碼為
1110
1100
補碼為
1110
1101

⑦ 反碼補碼怎麼算

+62原碼01000001,反碼和補碼與原碼相同

-62原碼11000001:

反碼10111110

補碼10111111

例如:

+64 原碼=反碼=補碼=0100 0000。

-10 原碼=1000 1010;

-10 反碼=1111 0101;

-10 補碼=1111 0110。

以補碼相加,得:0011 0110,這是+54 的補碼。

(7)反碼演算法擴展閱讀:

假設當前時針指向8點,而准確時間是6點,調整時間可有以下兩種撥法:一種是倒撥2小時,即燃猜8-2=6;另一種是順撥10小時,8+10=12+6=6,即8-2=8+10=8+12-2(mod 12).在12為模的系統里,加10和減2效果是一樣的,皮鄭型因此凡是減2運算,都可以用加10來代替。

若用一般公式叢蠢可表示為:a-b=a-b+mod=a+mod-b。對「模」而言,2和10互為補數。實際上,以12為模的系統中,11和1,8和4,9和3,7和5,6和6都有這個特性,共同的特點是兩者相加等於模。

⑧ 補碼.原碼.反碼怎麼運算的啊.詳細一點

計算機中,並沒有原碼反碼,只有補碼。

補碼,是在計算機中,自然形成的,跟原碼反碼毫無關系。

對於補碼,應該直接用二進制來討論,不要繞道並不存在的原碼反碼上去。

以八位機來說明如下。

數字 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(二進制)。

你用「原碼反碼符號位取反加一」來計算,也一樣是這個結果。

無聊的時候,再彎畢探討原碼反碼吧,反正也沒有任何用處。

⑨ 補碼.原碼.反碼怎麼運算的啊.詳細一點

原碼, 反碼和補碼的概念.對於一個數, 計算機要使用一定的編碼方式進行存儲. 原碼, 反碼, 補碼是機器存儲一個具體數字的編碼方式。原碼就是符號位加上真值的絕對值, 即用第一位表示符號, 其餘位表示值。反碼就是正數的反碼是其本身,負數的反碼是在其原碼的基礎上, 符號位不變,其餘各個位取反。補碼就是正數的補碼就是其本身,負數的補碼是在其原碼的基礎上, 符號位不變, 其餘各位取反。

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]補

對於負數,補碼表示方式也是人腦無法直觀看出其數值的。通常也需要轉換成原碼在計算其數值。

⑩ 原碼,補碼,反碼,移碼的表示方法怎麼算

原碼就是把原來的數化成2進制
比如10的原碼就是00001010,+10的原碼是00001010,最高位的0代老中簡表
這個數是正數(最高位就是符號位).
-10的原碼就是10001010,最高位的培搏1代表這個數是負數
+10的原碼是00001010,那他的反碼,補碼都和原碼相同
也是00001010,原因是正數的原

補碼相同
-10的原碼侍褲是10001010,那他的反碼是11110101,也就是符號位不變,其他位0變1,1變0.
他的補碼是在反碼的基礎上,最低位加1,也就是11110110.
明白了吧?

閱讀全文

與反碼演算法相關的資料

熱點內容
解放壓縮機支架 瀏覽:255
程序員禿頂搞笑相遇 瀏覽:6
IBM手機app商店叫什麼名字 瀏覽:834
jpeg壓縮質量 瀏覽:774
雲伺服器評測對比 瀏覽:145
java日期轉string 瀏覽:221
openfire源碼編譯 瀏覽:897
在線小工具箱引流網站源碼 瀏覽:337
非科班程序員自學 瀏覽:799
壓縮泡沫鞋底底材 瀏覽:219
程序員職場第一課2正確的溝通 瀏覽:679
遇到不合法app應該怎麼辦 瀏覽:90
匯編程序編譯後的文件 瀏覽:79
大智慧均線源碼 瀏覽:373
單片機排阻的作用 瀏覽:215
滴滴金融app被下架如何還款 瀏覽:212
jpg轉換成pdf免費軟體 瀏覽:743
范里安pdf 瀏覽:447
偽造pdf 瀏覽:79
能刪除android文件夾嗎 瀏覽:448