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...