① 二進制的反碼怎麼算
二進制的反碼演算法如下:
反碼:正數的反碼還是等於原碼;負數的反碼就是它的原碼除符號位外,按位取反。
兩個數進行二進制反碼求和的運算,它的規則是從低位到高位逐列進行計算。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.
明白了吧?