原碼反碼和補碼有什麼區別?原碼反碼和補碼區別

2022-12-16 13:50:15 字數 6125 閱讀 1430

1樓:羊秀英檀鳥

關於原碼反碼補碼,您可以借本。

《計算機組成原理》看看計算機中資料的表示形式。

首先更正下樓上的說法,正數的原碼反碼補碼都相同,即0011的反碼也為0011

!!切記。舉例來說:對於正數3,其二進位制形式為+0011,我們把+0011成為成為真值,在計算機中用0或1表示正負號,那麼+0011在計算機中原碼可以表示為00011(第一位為符號位)。反碼補碼不變。

對於負數,反碼即按位取反,比如10011可表示-3,10011為原碼,那麼符號位不變,其餘位按位取反即反碼11100.

補碼的存在是為了簡化計算的,其符號位一起參加運算,從而對於減法可轉化為加法。補碼的實質就是mod2。比如我們的鐘表是mod12的,那麼14點鐘我們也可以說是下午2點。

獲得補碼的方法是「按位取反,末位加1」那麼10011的補碼便是11101.。。

機器數即數值在計算機中的表示形式。

不知您明白了嗎?

2樓:路銀庚

原碼就是符號位加上真值的絕對值, 即用第一位表示符號, 其餘位表示值,如。

[+1]原 = 0000 0001

[-1]原 = 1000 0001

正數的反碼是其本身。

負數的反碼是在其原碼的基礎上, 符號位不變,其餘各個位取反。

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

[-1] =10000001]原 = 11111110]反。

補碼的表示方法是:

正數的補碼就是其本身。

負數的補碼是在其原碼的基礎上, 符號位不變, 其餘各位取反, 最後+1. (即在反碼的基礎上+1)

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

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

正數的原始碼,反碼,補碼都一樣。

3樓:沙裡波特

在計算機系統中,數值一律用補碼來表示和儲存。

由此即可看出它們最大的區別:

計算機中,只是使用補碼。

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

正負數,直接就能轉換成補碼,不需要原碼和反碼。

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

4樓:做而論道

在計算機系統中,數值,一律用補碼錶示(儲存)。

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

原碼反碼,只能寫在紙面上。區別,就在於此。

5樓:哀soul四醬

原碼就是符號位加上真值的絕對值, 即用第一位表示符號, 其餘位表示值。

正數的反碼是其本身,負數的反碼是在其原碼的基礎上, 符號位不變,其餘各個位取反。

正數的補碼就是其本身,負數的補碼是在其原碼的基礎上符號位不變,其餘各位取反, 最後+1(即在反碼的基礎上+1)。

正數的原碼,反碼,補碼都一樣。

原碼(true form)是一種計算機中對數字的二進位制定點表示方法。

原碼錶示法在數值前面增加了一位符號位(即最高位為符號位):正數該位為0,負數該位為1(0有兩種表示:+0和-0),其餘位表示數值的大小。

6樓:沙裡波特

區別:原碼反碼,並無用處。

補碼,有用。

在計算機中,並不存在原碼反碼。

計算機中,只用補碼錶示帶符號數。

求補碼,有更簡單的方法,也用不著原碼反碼。

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

讓人學習原碼反碼,不就是忽悠嗎?

原碼反碼和補碼區別

7樓:沙裡波特

原碼反碼,都是無用的垃圾,是老師用來整治學生的工具。

補碼,是實用的**。

在計算機中,正負數就是用補碼儲存的。

8樓:哈嘎嘎嘎

計算機中的符號數有三種表示方法,即原碼、反碼和補碼,具體如下:

1、原碼。就是二進位制定點表示法,原碼錶示法在數值前面增加了一位符號位,正數該位為0,負數該位為1,其餘位表示數值的大小,即最高位為符號位,0表示正,1表示負,其餘位表示數值的大小。

2、反碼。是數值儲存的一種,多應用於系統環境設定,如linux平臺的目錄和檔案的預設許可權的設定umask,就是使用反碼原理。

3、補碼。在計算機系統中,數值一律用補碼來表示和儲存。原因在於使用補碼,可以將符號位和數值域統一處理;同時,加法和減法也可以統一處理。

原碼、反碼和補碼有什麼不同?

9樓:鄔長征稱戊

計算機只識別0和1,正數的原碼和補碼是一樣的,反碼就是原碼對應的每個碼取反,比如3的二進位制表示為0011,其補碼為0011,反碼為1100,負數的二進位制為它的補碼+1取反,例如-3的補碼為0011,加1後為0100,再取反得到其二進位制表示1011

10樓:沙裡波特

不同之處:

計算機中,並沒有:原碼、反碼。

計算機中,有:補碼。

原碼,反碼,補碼各有什麼作用呀

11樓:沙裡波特

正負數,在計算機中存放的格式,就是補碼。

計算機中,並沒有原碼和反碼,也就不必關心它們了。

下面,針對補碼,給出解釋。

比如,有一個小孩,很小的。

他只認識 100 個數(0~99),也不會做減法。

那麼,就可以告訴他:「減一」,就用「加 99」算吧。

忽略進位的 100,結果不是一樣的嗎?

那麼,就是說:

99,就是-1 的補數。

98,就是-2 的補數。

利用「補數」,就可把「減法」轉為「加法」。

利用這個特點,計算機中,僅需一個「加法器」,就夠用了。

在計算機中,是以二進位制存放各種資訊的,統稱為:**。

八位,作為一個計算單位。

範圍是:0000 0000 ~ 1111 1111。

寫成十進位制,就是:0~255。

共有 256 個**。--這個數字,稱為:模。

那麼:1111 1111(255),就是-1 的補碼。

1111 1110(254),就是-2 的補碼。

1000 0000(128),就是-128 的補碼。

求負數的補碼,就是這麼簡單。

而零和正數,直接參加運算即可,用不著求補碼。

因此,下面就是補碼的定義式。

零和正數的補碼: 就是該數字本身。

負數的補碼: 就用「模」,加上該負數。

模,就是**的總個數。

原碼和反碼,則毫無意義。

所以,在計算機中,並沒有它們的存在。

12樓:匿名使用者

原碼:可直觀反映出資料的大小。

補碼:將加減運算統一為加法運算。

反碼:方便原碼和補碼的相互轉換。

13樓:吉祥二進位制

計算機只能識別0和1,使用的是二進位制。而在日常生活中人們使用的是十進位制,並且我們用的數值有正負之分。於是在計算機中就用一個數的最高位存放符號(0為正,1為負)。

這就是機器數的原碼了。

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

(0 0000001)原 + 1 0000001)原 = 1 0000010)原 = 2 ) 顯然不正確。

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

下面是反碼的減法運算:

(0 0000001)反 + 1 1111110)反 = 1 1111111)反 = 0 ) 有問題。

(0 0000001)反 + 1 1111101)反 = 11111110)反 = 1) 正確。

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

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

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

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

(0 0000001)補 + 1 1111111)補 = 0 0000000)補 = 0 ) 正確。

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

所以補碼的設計目的是:

⑴ 使符號位能與有效值部分一起參加運算,從而簡化運算規則。補碼機器數中的符號位,並不是強加上去的,是資料本身的自然組成部分,可以正常地參與運算。

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

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

什麼是原碼,補碼和反碼

14樓:沙裡波特

正負數,在計算機中,只是用【補碼】來儲存。

而原碼和反碼,在計算機中,並不存在。

下面按照八位二進位制來說明補碼的意義。

十進位制數 0,存放形式,就是二進位制 0000 0000。

十進位制數 +1,就加上 1,二進位制是 0000 0001。

十進位制數 +2,就再加 1,二進位制是 0000 0010。

。。。十進位制數 +127,加 1加 1...就加到了 0111 1111。

+127,這就是最大數值。

負數怎麼辦? 你就從 0,依次遞減吧。

十進位制數 0,以二進位制 0000 0000 存放。

十進位制數 -1,就減去 1,得 1111 1111 = 255(十進位制)。

十進位制數 -2,就再減 1,得 1111 1110 = 254。

十進位制數 -3,就再減 1,得 1111 1101 = 253。

。。。十進位制數 -128,減 1減 1...得 1000 0000 = 128。

不要再減了,這就是最小值了。

(你再繼續減,就是 0111 1111,這就是+127 了。)

因此,最小數值就是-128。

總結:

零和正數:直接用二進位制存放。

負數:存放形式是【256+這個負數】。

這套存放格式,就是所謂的【補碼】。

求【補碼】,就是這麼簡單。

完全不用繞到「原碼反碼符號位」那麼遠。

可以用十進位制來計算。如果需要二進位制,你就再轉換一下。

用這個方法,不涉及原碼反碼符號位,就少了不少麻煩事。

為什麼負數用補碼儲存?

利用補碼,可以把減法運算,轉換成加法。

(所以,在計算機中,有一個加法器,就夠用了。)

例如,6-2 = 4,在計算機中,用補碼代替數字,運算如下:

6 的補碼是

+ -2 的補碼是

(= 4 的補碼)

(括號中的 1,是進位,捨棄不要了。)

注意:如果運算結果超出了-128~+127 的範圍,結果將是錯的。

這種現象稱為「溢位」。

再注意一下:進位,並不等於溢位。

因為補碼的這個特性,所以,在計算機中,只是使用補碼存放資料。

而原碼反碼,在計算機中,都是不存在的。

所以,大家,完全不必在原碼反碼 上浪費時間精力。

求原碼,反碼,補碼,原碼,反碼,補碼和移碼 原碼 1001101,反碼,補碼,移碼各是多少?

內容來自使用者 liangbing609 基本概念在計算機內部表示二進位制數的方法稱為數值編碼,把一個數及其符號在機器中的表示加以數值化,稱為機器數。機器數所代表的數稱為數的真值。表示一個機器數,應考慮以下三個因素 1 機器數的範圍 字長為8位,無符號整數的最大值是 11111111 b 255 d...

1的原碼,補碼,反碼是什麼,0的原碼 反碼 補碼是什麼?

1 機器數一個數在計算機中的二進位制表示形式,叫做這個數的機器數。機器數是帶符號的,在計算機用一個數的最高位存放符號,正數為0,負數為1.比如,十進位制中的數 3,計算機字長為8位,轉換成二進位制就是00000011。如果是 3,就是 10000011 那麼 1,就是10000001 2.原碼 原碼...

計算機的原碼,反碼,補碼。寫出 98的8位原碼 反碼 補碼。求詳細解答,只寫答案的勿答。謝謝

解答過程 正數的原碼 反碼和補碼相同。負數的反碼在原碼基礎上進行 除符號位外各位取反 操作而來 負數的補碼在反碼的基礎上進行 末位加1 操作而來。符號位 正數用0表示,負數用1表示。假設機器字長為8位。89的二進位制為1011001,98的二進位制為1100010 89 原碼 01011001 即0...