1樓:du瓶邪
反碼:解決負數加法運算問題,將減法運算轉換為加法運算,從而簡化運算規則;
補碼:解決負數加法運算正負零問題,彌補了反碼的不足。
總之,反碼與補碼都是為了解決負數運算問題,跟正數沒關係,因此,不管是正整數還是正小數,原碼,反碼,補碼都全部相同。
總結:1、正數的原碼、補碼、反碼均為其本身;
2、負數(二進位制)的原碼、補碼、反碼公式:
反碼 = 原碼(除符號位外)每位取反
補碼 = 反碼 + 1
反碼 = 補碼 - 1
移碼 = 補碼符號位取反
2樓:入境無語
數值在計算機中表示形式為機器數,計算機只能識別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等其他高階語言中使用的都是原碼。
3樓:歧凌蝶肇戈
1011
原碼:01011
反碼:01011
//正數時,反碼=原碼
補碼:01011
//正數時,補碼=原碼
移碼:11011
//原數+10000
-1011
原碼:11011
反碼:10100
//負數時,反碼為原碼取反
補碼:10101
//負數時,補碼為原碼取反+1
移碼:00101
//原數+10000
0.1101
原碼:0.1101
反碼:0.1101
//正數時,反碼=原碼
補碼:0.1101
//正數時,補碼=原碼
移碼:1.1101
//原數+1
-0.1101
原碼:1.1101
反碼:1.0010
//負數時,反碼為原碼取反
補碼:1.0011
//負數時,補碼為原碼取反+1
移碼:0.0010
//原數+1
-1的原碼,反碼,補碼,移碼是什麼?
4樓:匿名使用者
原碼 1000 0001
反碼抄 1111 1110
補碼 1111 1111
移碼 0111 1111
我多內容了~
補碼相對於原碼、反碼可以多表示一個數,因為反碼和原碼中「0」有兩種表示方法,而補碼只有一種。
在小數情況下,「多表示一個數」表現出來就是能表示-1。
//這個內容因為比較重要,是個專業點的教材上都會作特別說明,還是要好好看書啊~~
5樓:突然很想哭之麥
你應該去參考微機原理
-1的原碼是10000001
-1的反碼是11111110
-1的補碼是10000010
我是按的8位機器數做的!!
移碼沒學過幫不上了……
6樓:匿名使用者
原碼 1000 0001
反碼 1111 1110
補碼 1111 1111
移碼 0111 1111
7樓:匿名使用者
原碼 1000 0001
反碼 1111 1110
補碼 1111 1111
8樓:匿名使用者
~~he ~~
原碼 1000 0001
反碼 1111 1110
補碼 1111 1111
移碼 0111 1111
二進位制數11010100的原碼,反碼,補碼和移碼是什麼?
9樓:匿名使用者
正數的原、反、補碼都一樣:0的原碼跟反碼都有兩個,因為這裡0被分為+0和-0。
二進位制數11010100 是負數:= -2^6-2^4-2^2[x]原=11010100
符號位不變,原碼的其他位按位取反:
[x]反=10101011
補碼在反碼的基礎上按照正常的加法運算加1
[x]補=10101100
移碼不論正負,將其補碼的符號位取反即可
[x]移=00101100
10樓:匿名使用者
帶符號的二進位制數的原碼,反碼和補碼的計算,符號位與數值位單獨運算.
如+11010100的原碼是0 11010100,反碼是0 00101011,補碼是0 00101100,移碼要看是左移還是右移,是帶符號移還是不帶符號移的情況再定
11樓:做而論道
沒有正負號該怎麼算??
----
沒有正負號,這不就是無符號數嗎?
這就直接用二進位制數了,沒有什麼碼的問題。
12樓:沙裡波特
二進位制數 1101 0100 的原碼,反碼,補碼和移碼是什麼?
我知道若是 +1101 0100 的原碼便是 0,1101 0100這邊沒有正負號該怎麼算?
--沒有符號,便是「無符號數」。
--無符號數,並沒有原碼反碼補碼這些囉嗦事。
--無符號數,直接就存放到計算機中,即可。
原碼,反碼,補碼和移碼: 原碼:1001101,反碼,補碼,移碼各是多少?
13樓:
解:首位數字表示正負不做變(1為負數,0為正數)
反碼:1110010(正數反碼等於原數,題中為負數,則除首位數對應取反)
補碼:1110011(得出反碼數基礎上末位加一)
移碼:0110011(補碼符號位第一位數字取反)
反碼是數值儲存的一種,多應用於系統環境設定,如linux平臺的目錄和檔案的預設許可權的設定umask,就是使用反碼原理。
補碼(2's ***plement)是一種用二進位制表示有號數的方法,也是一種將數字的正負號變號的方式。
移碼(又叫增碼)是符號位取反的補碼,一般用指數的移碼減去1來做浮點數的階碼,引入的目的是為了保證浮點數的機器零為全0。
補碼的設計目的是:
1.使符號位能與有效值部分一起參加運算,從而簡化運算規則.
2.使減法運算轉換為加法運算,進一步簡化計算機中運算器的線路設計 所有這些轉換都是在計算機的最底層進行的,而在我們使用的彙編、c等其他高階語言中使用的都是原碼。
小數和分數的補碼:
1.十進位制分數補碼可以先將分子和分母分別表示成二進位制數,然後計算出二進位制小數,再按下面第三步的方法將求出小數的補碼形式。
2.十進位制小數的補碼也應該先將其轉換成二進位制小數,再按下面第三步的方法將求出小數的補碼形式。
14樓:大野瘦子
反碼:1,110010(除符號位以外,各位取反)補碼:1,110011(除符號位以外,各位取反,末位加一)移碼:
0,110011(對補碼符號位取反)注意:1、首先判斷原碼的正負,因為對於正數,其原碼、補碼反碼錶示形式相同(符號位為0,數值部分與真值相同)
2、對於反碼和補碼,要區別:已知[x補],求[-x補]的題目(連同符號位各位取反,末位加一)
15樓:匿名使用者
我們考試要考(權當練習):
原碼:1,001101
=>負數
=>反碼:1,110010(除符號位以外,各位取反)=>補碼:1,110011(除符號位以外,各位取反,末位加一)=>移碼:
0,110011(對補碼符號位取反)注意點:1,首先判斷原碼的正負,因為對於正數,其原碼、補碼反碼錶示形式相同(符號位為0,數值部分與真值相同)
2,對於反碼和補碼,要區別:已知[x補],求[-x補]的題目(連同符號位各位取反,末位加一)
16樓:一嘆
整數的三種碼都是一樣的,移碼的話就是加上2的n次方,負數反碼符號位不變其他位取反,補碼就是反碼再加上1。移碼加上2的n次方。
17樓:
反碼:1110010
補碼:1110011
移碼:0110011
對於負數的反碼是原碼符號位不變,其它位數取反;
補碼是反碼加一;
移碼就是在原有的補碼的基礎上對於符號取反。
18樓:合夏侯戎
這個你需要問專業人士了,不然沒人懂的的,這是***碼
19樓:匿名使用者
這是個負數,負數的反碼=它的原碼符號位不變,其他位取反。補碼=反碼+1。移碼我還沒學過,就不知道了
計算機組成原理:原碼,補碼,反碼,移碼之間的關係?
20樓:匿名使用者
所謂原碼就是二進位制定點表示法,即最高位為符號位,「0」表示正,「1」表示負,其餘位表示數值的大小。 反碼錶示法規定:正數的反碼與其原碼相同;負數的反碼是對其原碼逐位取反,但符號位除外。
補碼錶示法規定:正數的補碼與其原碼相同;負數的補碼是在其反碼的末位加1。
跪求詳細地講解下原碼,補碼,反碼,移碼該怎麼求,及他們之間的
計算機中,只是使用補碼存放正負數。補碼,與正負數一一對應。有一個公式供你直接轉換,不需要繞道原碼反碼。另外,移碼 補碼 偏移量。原碼反碼,在計算機中,都不存在。原碼 如果機器字長為n,那麼一個數的原碼就是用一個n位的二進位制數,其中最高位為符號位 正數為0,負數為1。剩下的n 1位表示概數的絕對值。...
原碼,反碼,補碼是什麼補碼,原碼,反碼什麼的。有什麼作用啊!
正數的原碼,補碼,反碼相同,先求原碼,因為正數的原碼就是他的真值。負數的原碼是在正數的原碼基礎上,最高位置1,即符號位。然後再求反碼 符號位1不變,後面的所有位取反,然後再求補碼 在反碼的基礎上,末尾加1 注意負數的反碼,補碼除了符號位外也不是該負數的真值,而是原碼的除了最高位後面的數是真值的絕對值...
原碼 反碼 補碼的基本概念,原碼 反碼和補碼錶示的規則分別是什麼?
原碼 一個整數,按照絕對值大小轉換成的二進位制數,稱為原碼。比如00000000 00000000 00000000 00000101是5的 原碼。反碼 將二進位制數按位取反,所得的新二進位制數稱為原二進位制數的反碼。取反操作指 原為1,得0 原為0,得1。1變0 0變1 比如 將00000000 ...