① 補碼是誰發明的,它的最初作用是什麼
補碼就是正數的原碼的相反數的另一種編碼方式。它能把字長內的正數,補足為全是0。
② 一個數的原碼,反碼,補碼怎麼算
計算機中的存儲系統都是用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等其他高級語言中使用的都是原碼
③ c語言裡面,反碼誰發明的
當然是c語言的專家了。
所謂原碼就是二進制定點表示法,即最高位為符號位,「0」表示正,「1」表示負,其餘位表示數值的大小。
反碼表示法規定:正數的反碼與其原碼相同;負數的反碼是對其原碼逐位取反,但符號位除外。
原碼10010= 反碼11101 (10010,1為符號碼,故為負)
(11101) 二進制= -2 十進制
補碼表示法規定:正數的補碼與其原碼相同;負數的補碼是在其反碼的末位加1。
提示信息不要太少,可「某某數的反碼是某某」,而不是只顯示數值。
1.原碼的求法:(1)對於正數,轉化為二進制數,在最前面添加一符號位(這是規定的),用1表示負數,0表示正數.如:0000 0000是一個位元組,其中左邊第一個0為符號位,表示是正數,其它七位表示二進制的值.其實,機器不管這些,什麼符號位還是值,機器統統看作是值來計算. 正數的原碼、反碼、補碼是同一個數!
(2)對於負數,轉化為二進制數,前面符號位為1.表示是負數.
計算原碼只要在轉化的二進制數前面加上相應的符號位就行了.
2.反碼的求法:對於負數,將原碼各位取反,符號位不變.
3.補碼的求法:對於負數,將反碼加上二進制的1即可,也就是反碼在最後一位上加上1就是補碼了.
④ 補碼的整數補碼
求給定數值的補碼分以下兩種情況: 正整數的補碼是其二進製表示,與原碼相同 。
【例1】+9的補碼是00001001。(備註:這個+9的補碼是用8位2進制來表示的,補碼表示方式很多,還有16位二進制補碼表示形式,以及32位二進制補碼表示形式,64位進制補碼表示形式等。每一種補碼表示形式都只能表示有限的數字。) 求負整數的補碼,將其對應正數二進製表示所有位取反(包括符號位,0變1,1變0)後加1 。
同一個數字在不同的補碼表示形式中是不同的。比如-15的補碼,在8位二進制中是11110001,然而在16位二進制補碼表示中,就是1111111111110001。以下都使用8位2進制來表示。
【例2】求-5的補碼。
-5對應正數5(00000101)→所有位取反(11111010)→加1(11111011)
所以-5的補碼是11111011。
【例3】數0的補碼表示是唯一的。
[+0]補=[+0]反=[+0]原=00000000
[ -0]補=11111111+1=00000000 已知一個數的補碼,求原碼的操作其實就是對該補碼再求補碼:
⑴如果補碼的符號位為「0」,表示是一個正數,其原碼就是補碼。
⑵如果補碼的符號位為「1」,表示是一個負數,那麼求給定的這個補碼的補碼就是要求的原碼。
【例4】已知一個補碼為11111001,則原碼是10000111(-7)。
因為符號位為「1」,表示是一個負數,所以該位不變,仍為「1」。
其餘七位1111001取反後為0000110;
再加1,所以是10000111。 【例5】-65的補碼是10111111
若直接將10111111轉換成十進制,發現結果並不是-65,而是191。
事實上,在計算機內,如果是一個二進制數,其最左邊的位是1,則我們可以判定它為負數,並且是用補碼表示。
若要得到一個負二進制補碼的數值,只要對補碼全部取反並加1,就可得到其數值。
如:二進制值:10111111(-65的補碼)
各位取反:01000000
加1:01000001(+65)

⑤ 原碼、反碼、補碼的產生、應用以及優缺點有哪些
1、 原碼:是機器數的一種簡單的表示法。其符號位用0表示正號,用1表示負號,數值一般用二進制形式表示。
優點:最簡單直觀。
缺點:不能直接參加運算,可能會出錯。
原碼來歷:在機器中,只能識別二進制數字,所以所以的數字都用原碼來表示。
2、 反碼:可由原碼得到。如果機器數是正數,則該機器數的反碼與原碼一樣;如果機器數是負數,則該機器數的反碼是對它的原碼(符號位除外)各位取反而得到的。
優點:解決負數加法運算問題,將減法運算轉換為加法運算,從而簡化運算規則。
缺點:沒有缺點
反碼來歷:為了解決「正負相加等於0」的問題,在「原碼」的基礎上,人們發明了「反碼」
3、 補碼:可由原碼得到。如果機器數是正數,則該機器數的補碼與原碼一樣;如果機器數是負數,則該機器數的補碼是對它的原碼(除符號位外)各位取反,並在未位加1而得到的
優點:可以把負數直接拿來算加法。
缺點:容易忘記公式,計算錯誤。
補碼來歷:計算機裡面,只有加法器,沒有減法器,所有的減法運算,都必須用加法進行,用補數代替原數,可把減法轉變為加法。
4、 在計算機中為什麼要使用補碼:由於原碼和反碼中,+0與-0的表示並不相同,所以計算機中一般使用補碼。其實還有一個更重要的作用,就是利用高位溢出,將減法運算變成加法。
⑥ -5的原碼、反碼和補碼各是多少啊,5呢
-5的原碼、反碼和補碼各是10000101、11111010和11111011。
5的原碼、反碼和補碼各是00000101、01111010和01111011。
計算機中的存儲系版統都是用2進制儲存權的,對我們輸入的每一個信息它都會自動轉變成二進制的形式,而二進制在存儲的時候就會用到原碼,反碼和補碼。
例如:輸入25
原碼就是:0000000000011001
反碼: 1111111111100110
補碼: 1111111111100111

(6)補碼發明擴展閱讀:
補碼是為了計算方便而發明的。原始計算器只能做加法不能做減法,但是科學家發現,例如7+(-5)=2可以這樣算:7+(-5) = 7+(10000-5)-10000 = 10002 - 10000 = 2 。
這很奇怪,因為機器太傻,只能做加法,但是雖然不會減法,-10000還是很方便的,只要去掉開頭的1;用10000減也是很方便的,因為可以用9999減然後+1,而用9999減,只要把每一位用9減。
⑦ 二進制數字系統是誰發明的
二進制是計算技術中廣泛採用的一種數制。二進制數據是用0和1兩個數碼來表示的專數。它屬的基數為2,進位規則是「逢二進一」,借位規則是「借一當二」,由18世紀德國數理哲學大師萊布尼茲發現。當前的計算機系統使用的基本上是二進制系統,數據在計算機中主要是以補碼的形式存儲的。計算機中的二進制則是一個非常微小的開關,用「開」來表示1,「關」來表示0。
⑧ 最早發明二進制的人是誰 科舉鄉試
二進制是計抄算技術中廣襲泛採用的一種數制。二進制數據是用0和1兩個數碼來表示的數。它的基數為2,進位規則是「逢二進一」,借位規則是「借一當二」,由18世紀德國數理哲學大師萊布尼茲發現。當前的計算機系統使用的基本上是二進制系統,數據在計算機中主要是以補碼的形式存儲的。計算機中的二進制則是一個非常微小的開關,用「開」來表示1,「關」來表示0。
20世紀被稱作第三次科技革命的重要標志之一的計算機的發明與應用,因為數字計算機只能識別和處理由『0』.『1』符號串組成的代碼。其運算模式正是二進制。19世紀愛爾蘭邏輯學家喬治布爾對邏輯命題的思考過程轉化為對符號"0''.''1''的某種代數演算,二進制是逢2進位的進位制。0、1是基本算符。因為它只使用0、1兩個數字元號,非常簡單方便,易於用電子方式實現。
⑨ 二進制的計算「機」發明者是是誰計算機
二進制是計算技術中廣泛採用的一種數制。二進制數據是用0和1兩個數碼來表示版的數。它的基數權為2,進位規則是「逢二進一」,借位規則是「借一當二」,由18世紀德國數理哲學大師萊布尼茲發現。當前的計算機系統使用的基本上是二進制系統,數據在計算機中主要是以補碼的形式存儲的。計算機中的二進制則是一個非常微小的開關,用「開」來表示1,「關」來表示0。 20世紀被稱作第三次科技革命的重要標志之一的計算機的發明與應用,因為數字計算機只能識別和處理由『0』.『1』符號串組成的代碼。其運算模式正是二進制。19世紀愛爾蘭邏輯學家喬治布爾對邏輯命題的思考過程轉化為對符號"0''.''1''的某種代數演算,二進制是逢2進位的進位制。0、1是基本算符。因為它只使用0、1兩個數字元號,非常簡單方便,易於用電子方式實現。
⑩ 補碼存在的意義
補碼可復以簡化計算機制的設計。
對於人腦而言,做加減題時,第一反應就是根據符號位,來選擇對真值區域的加減。但是計算機而言,像加減乘除這類最最基礎也是應用得最頻繁的基本運算,在物理邏輯的設計上一定要設計的盡量簡單。
如果讓計算機也先判斷符號位再分別做加或者減的運算的話,會使得計算機的電路設計變得較為復雜。人類發明了將符號位也參與進運算的方法來。對於計算機而言,不管是加法還是減法,都統一用加法來做運算,可以使得計算機的設計變得更加的簡單。

(10)補碼發明擴展閱讀:
補碼是另一種編碼方式。與反碼類似,正數的補碼是它本身,而負數的補碼則是它的反碼再+1。同樣,對於負數而言,補碼也是無法直觀地看出數值的,需要轉成原碼。
CPU 的基本單元 ALU 模塊。在ALU里,加法是最基本的運算。通過程序,乘法可以轉換為加分,除法可以轉換為減法。補碼表示,則可以讓減法直接轉換為加法。這樣,ALU 核心只需要加法器即可滿足功能,加法器可以通過集成電路中的晶體管來實現。