計算機原始碼,反碼,補碼之間怎麼計算

2021-03-12 16:08:03 字數 6944 閱讀 8615

1樓:心平氣和

1、正整數的原碼、反碼、補碼完全一樣,即符號位固定為0,數值位相同。

2、負整數的符號位固定為1,由原碼變為補碼時,規則如下:原碼符號位1不變,整數的每一位二進位制數字求反,得到反碼;反碼符號位1不變,反碼數值位最低位加1,得到補碼。

3、例如正整數的原碼為01110110,則反碼和補碼也為01110110;負整數的原碼為11110110,反碼為10001001,補碼為11110111。

拓展資料:

1、反碼是數值儲存的一種,多應用於系統環境設定,如linux平台的目錄和檔案的預設許可權的設定umask,就是使用反碼原理。在計算機內,定點數有3種表示法:原碼、反碼和補碼。

2、在計算機系統中,數值一律用補碼來表示(儲存)。 主要原因:使用補碼,可以將符號位和其它位統一處理;同時,減法也可按加法來處理。

另外,兩個用補 碼表示的數相加時,如果最高位(符號位)有進製,則進製被捨棄。

2樓:匿名使用者

換算根據他們各自的定義進行。

所謂原碼就是二進位制定點表示法,即最高位為符號位,「0」表示正,「1」表示負,其餘位表示數值的大小。

反碼表示法規定:正數的反碼與其原碼相同;負數的反碼是對其原碼逐位取反,但符號位除外。

原碼10010= 反碼11101 (10010,1為符號碼,故為負)補碼表示法規定:正數的補碼與其原碼相同;負數的補碼是在其反碼的末位加1。

例如:(1) 原碼:在數值前直接加一符號位的表示法。

例如: 符號位 數值位

[+7]原= 0 0000111 b

[-7]原= 1 0000111 b

注意:a. 數0的原碼有兩種形式:

定點小數表示方法

[+0]原=00000000b [-0]原=10000000bb. 8位二進位制原碼的表示範圍:-127~+127換算:

[+7]反= 0 1111000 b[-7]反= 1 1111000 b

[+7]補= 0 0000111 b 等於 [+7]原[-7]補= 1 1111001 b 等於 [-7]反+ 1

3樓:匿名使用者

嗯 是這樣的 數值在計算機中表示形式為機器數,計算機只能識別0和1的,使用的是二進位制,而在日常生活中人們使用的是十進位制.數值有正負之分,計算機就用乙個數的最高位存放符號(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等其他高階語言中使用的都是原碼。

4樓:匿名使用者

原始碼就是2過製反碼就是全反過來0變1 1變0 補碼就是反碼加1比如十進位製數 34二進位制是 100010反碼是 011101補碼是 011110

5樓:匿名使用者

是原碼 不是原始碼對於整數:補碼反碼原碼都是一樣的,也就是它本身的二進位制 對於負數:原碼:

絕對值的原碼,將最高為變1反碼:絕對值的原碼按位取反補碼:絕對值的原碼按位取反再加1

計算機的原碼,反碼,補碼是怎麼回事?可以舉例說明嗎?

6樓:王王王小六

原碼、反碼和補碼是計算機中對

數字二進位制的三種表示方法。

1、原碼

原碼(true form)是一種計算機中對數字的二進位制定點表示方法。原碼表示法在數值前面增加了一位符號位(即最高位為符號位):正數該位為0,負數該位為1(0有兩種表示:

+0和-0),其餘位表示數值的大小。

例如:用8位二進位制表示乙個數,+11的原碼為00001011,-11的原碼就是10001011。

2、反碼

反碼是數值儲存的一種,多應用於系統環境設定,如linux平台的目錄和檔案的預設許可權的設定umask,就是使用反碼原理。反碼的表示方法是:正數的反碼與其原碼相同;負數的反碼是對正數逐位取反,符號位保持為1。

例如:[+7]反= 0 0000111 b;

[-7]反= 1 1111000 b。

3、補碼

正數:正數的補碼和原碼相同。負數:

負數的補碼則是符號位為「1」。並且,這個「1」既是符號位,也是數值位。數值部分按位取反後再在末位(最低位)加1。

也就是「反碼+1」。

例如:[+7]補= 0 0000111 b;

[-7]補= 1 1111001 b。

擴充套件資料

原碼、反碼、補碼的轉換方法如下:

(1) 已知原碼,求補碼。

例:已知某數x的原碼為10110100b,試求x的補碼和反碼。

首先通過原碼的首位確定該數字的正負,若為正數,反碼與原碼相同,補碼比原碼在末尾加1;若為負數,求其反碼時,符號位不變,數值部分按位求反;求其補碼時,再在其反碼的末位加1。

(2)已知補碼,求原碼。

按照求負數補碼的逆過程,數值部分應是最低位減1,然後取反。但是對二進位製數來說,先減1後取反和先取反後加1得到的結果是一樣的,故仍可採用取反加1的方法。

7樓:匿名使用者

計算機以二進位制補碼儲存資料

以16位機器為例:

比如83的二

進製碼為:0000 0000 0101 0011由於正數的原始碼、反嗎、補碼,上面的既是原始碼,也是反碼和補碼下面通過負數講解原始碼、反碼、補碼之間的關係以-83為例

先求出-83絕對值的原始碼:0000 0000 0101 0011計算機區分正負數通過判斷最高位符號位,1為負數、0為正數那麼-83的原始碼為:1000 0000 0101 0011反碼在原始碼基礎上按位取反,符號位不變:

1111 1111 1010 1100

補碼在反碼的基礎上加1:1111 1111 1010 1101補碼轉原始碼:補碼基礎上按位取反後加一,符號位在取反時不變,加一時最高位符號位有進製的,進製忽略

取反:1000 0000 0101 0010加1:1000 0000 0101 0011

8樓:匿名使用者

十進位制→ 二進位制(怎麼算?要是不知道看計算機基礎的書去)47   → 101111

有符號的整數    原碼    反碼    補碼47      00101111  11010000  00101111(正數補碼和原碼相同)

-47      00101111  11010000  11010001(負數補碼是在反碼上加1)

補碼、原碼、反碼怎麼運算?

9樓:

原碼, 反碼和補碼的概念.對於乙個數, 計算機要使用一定的編碼方式進行儲存. 原碼, 反碼, 補碼是機器儲存乙個具體數字的編碼方式。

原碼就是符號位加上真值的絕對值, 即用第一位表示符號, 其餘位表示值。反碼就是正數的反碼是其本身,負數的反碼是在其原碼的基礎上, 符號位不變,其餘各個位取反。補碼就是正數的補碼就是其本身,負數的補碼是在其原碼的基礎上, 符號位不變, 其餘各位取反。

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

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

為何要使用原碼, 反碼和補碼

在開始深入學習前, 我的學習建議是先"死記硬背"上面的原碼, 反碼和補碼的表示方式以及計算方法。

現在我們知道了計算機可以有三種編碼方式表示乙個數. 對於正數因為三種編碼方式的結果都相同:

[+1] = [00000001]原 = [00000001]反 = [00000001]補

所以不需要過多解釋. 但是對於負數:

[-1] = [10000001]原 = [11111110]反 = [11111111]補

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

首先, 因為人腦可以知道第一位是符號位, 在計算的時候我們會根據符號位, 選擇對真值區域的加減. (真值的概念在本文最開頭). 但是對於計算機, 加減乘數已經是最基礎的運算, 要設計的盡量簡單.

計算機辨別"符號位"顯然會讓計算機的基礎電路設計變得十分複雜! 於是人們想出了將符號位也參與運算的方法. 我們知道, 根據運算法則減去乙個正數等於加上乙個負數, 即:

1-1 = 1 + (-1) = 0 , 所以機器可以只有加法而沒有減法, 這樣計算機運算的設計就更簡單了。

於是人們開始探索 將符號位參與運算, 並且只保留加法的方法. 首先來看原碼:

計算十進位制的表示式: 1-1=0

1 - 1 = 1 + (-1) = [00000001]原 + [10000001]原 = [10000010]原 = -2

如果用原碼表示, 讓符號位也參與計算, 顯然對於減法來說, 結果是不正確的.這也就是為何計算機內部不使用原碼表示乙個數。

為了解決原碼做減法的問題, 出現了反碼:

計算十進位制的表示式: 1-1=0

1 - 1 = 1 + (-1) = [0000 0001]原 + [1000 0001]原= [0000 0001]反 + [1111 1110]反 = [1111 1111]反 = [1000 0000]原 = -0

發現用反碼計算減法, 結果的真值部分是正確的. 而唯一的問題其實就出現在"0"這個特殊的數值上. 雖然人們理解上+0和-0是一樣的, 但是0帶符號是沒有任何意義的.

而且會有[0000 0000]原和[1000 0000]原兩個編碼表示0。

於是補碼的出現, 解決了0的符號以及兩個編碼的問題:

1-1 = 1 + (-1) = [0000 0001]原 + [1000 0001]原 = [0000 0001]補 + [1111 1111]補 = [0000 0000]補=[0000 0000]原

這樣0用[0000 0000]表示, 而以前出現問題的-0則不存在了.而且可以用[1000 0000]表示-128:

(-1) + (-127) = [1000 0001]原 + [1111 1111]原 = [1111 1111]補 + [1000 0001]補 = [1000 0000]補

-1-127的結果應該是-128, 在用補碼運算的結果中, [1000 0000]補 就是-128. 但是注意因為實際上是使用以前的-0的補碼來表示-128, 所以-128並沒有原碼和反碼表示.(對-128的補碼表示[1000 0000]補算出來的原碼是[0000 0000]原, 這是不正確的)

使用補碼, 不僅僅修復了0的符號以及存在兩個編碼的問題, 而且還能夠多表示乙個最低數. 這就是為什麼8位二進位制, 使用原碼或反碼表示的範圍為[-127, +127], 而使用補碼表示的範圍為[-128, 127]。

因為機器使用補碼, 所以對於程式設計中常用到的32位int型別, 可以表示範圍是: [-231, 231-1] 因為第一位表示的是符號位.而使用補碼表示時又可以多儲存乙個最小值。

計算機補碼是什麼

1在計算機系統中,數值一律用補碼來表示 儲存 使用補碼,可以將符號位和其他位統一處理 同時,減法也可按加法來處理.另外,兩個用補碼表示的資料相加時候,如果最高位 符號位 有進製,則進製被捨棄.2補碼與原碼的轉換過程幾乎是相同的 數值的補碼表示也分兩種情況 1 正數的補碼 與原碼相同.例如,9的補碼是...

計算機基本運算中,補碼運算怎樣判斷數值是否有溢位

用二進位制補碼,表示正負數,具有一定的表示範圍。當運算結果,超出了它所能表示的範圍,就會溢位。如果出現了溢位,這組 就不能正確表示結果。八位二進位制 0000 0000 1111 1111。也就是十進位製數 0 255。它們如果是補碼 0 127,就直接代表零和正數 128 255,則以補碼代表 1...

計算機巡檢報告怎麼寫我要,計算機巡檢報告怎麼寫我要范文

網路巡檢的我就有,計算機的沒有。你要出這個報告,關鍵是你得先給這些裝置訂下一套規矩。即規劃化,標準化的管理制度。先訂好這些東西,你自然就知道報告怎麼寫了。檢查了什麼,那些是違反規則的,那些是可以改善的,如何改善。到 找找答案吧!希望能幫到你!巡檢報告單 機器型號 關於 計算機實驗報告 的心得體會怎麼...