❶ 計算機的原碼,反碼,補碼是怎麼回事可以舉例說明嗎
原碼、反碼和補碼是計算機中對數字二進制的三種表示方法。
1、原碼
原碼(trueform)是一種計算機中對數字的二進制定點表示方法。原碼表示法在數值前面增加了一位符號位(即最高位為符號位):正數該位為0,負數該位為1(0有兩種表示:+0和-0),其餘位表示數值的大配賣小。
例如:培伏逗用8位二進製表示一個數,+11的原碼為00001011,-11的原碼就是10001011。
2、反碼
反碼是數值存儲的一種,多應用於系統環境設置,如linux平台的目錄和文件的默認許可權的設置umask,就是使用反碼原理。反碼的表示方法是:正數的反碼與其原碼相同;負數的反碼是對正數逐位取反,符號位保持為1。
例如:
[+7]反=00000111B;
[-7]反=11111000B。
3、補碼
正數:正數的補碼和原碼相同。負數:負數廳知的補碼則是符號位為「1」。並且,這個「1」既是符號位,也是數值位。數值部分按位取反後再在末位(最低位)加1。也就是「反碼+1」。
例如:
[+7]補=00000111B;
[-7]補=11111001B。
(1)生活中哪些例子可以說明補碼擴展閱讀
原碼、反碼、補碼的轉換方法如下:
(1)已知原碼,求補碼。
例:已知某數X的原碼為10110100B,試求X的補碼和反碼。
首先通過原碼的首位確定該數字的正負,若為正數,反碼與原碼相同,補碼比原碼在末尾加1;若為負數,求其反碼時,符號位不變,數值部分按位求反;求其補碼時,再在其反碼的末位加1。
(2)已知補碼,求原碼。
按照求負數補碼的逆過程,數值部分應是最低位減1,然後取反。但是對二進制數來說,先減1後取反和先取反後加1得到的結果是一樣的,故仍可採用取反加1的方法。
❷ C語言里的補碼是什麼意思多舉幾個例子來解釋.
補碼,是在計算機內部,正負數的存放格式。
C 語言是高級語言。
用高級語言編程,是不用關心計算機內部的事的。
如果非要涉及計算機內部的細節,那就不是高級語言了。
很多教材書籍的作者,都沒有弄明白:什麼是戚攔襲高級語言。
計算機內部的碼,有很多種了,要高兄是討論起來,C 語衡纖言就學不完了。
❸ 舉一個計算機補碼計算的例子,以及怎麼計算
運用:在計算機系統中,數值一律用補碼來表示和存儲。原因在於,使用補碼,可以將符號位和數值域統一處理。
計算
1、正數
正整數的補碼是其二進製表示,與原碼相同。
例如:+9的補碼是00001001。(備註:這個+9的補碼是用8位2進制來表示的,補碼表示方式很多,還有16位二進制補碼表示形式,以及32位二進制補碼表示形式,64位進制補碼表示形式等。每一種補碼表示形式都只能表示有限的數字。)
2、負數
求負整數的補碼,將其原碼除符號位外的所有位取反(0變1,1變0,符號位為1不變)後加1。
同一個數字在不同的補碼表示形式中是不同的。比如-15的補碼,在8位二進制中是11110001,然而在16位二進制補碼表示中,就是1111111111110001。以下都使用8位2進制來表示。
例如:求-5的補碼。-5對應正數5(00000101)→所有位取反(11111010)→加1(11111011)。所以-5的補碼是11111011。
3、0的補碼
[+0]補=[+0]反=[+0]原=00000000
[ -0]補=11111111+1=00000000
(3)生活中哪些例子可以說明補碼擴展閱讀
補碼乘法
補碼的乘法不具備【X*Y】補=【X】補×【Y】補的性質。但是【做鋒嘩X*Y】補==【X】補×Y,所得結果再取補碼,如x=101,y=011,[x*y]補=-[(-101)*011]=-[011*011]=-01001=10111。
其中,若【Y】補=y31y30??y0,則 Y=-y31*2^31+y30*2^30+??+y0*2^0
原碼
原碼(true form)是一種計算機中對數字的二進制定點表示方法。原碼表示法在數值前面增加了一位符號位(即最高位為符號位):正數該位為0,基肆負數該位為1(0有兩種表示:+0和-0),其餘位表示數值的大小。
❹ 怎樣直白地理解補碼原理
問這個問題的人多了解補碼的一些知識,最常用的補碼等於原碼加一,但是不怎麼理解補碼到底是怎麼工作的。 下面是幾個常見的問題,理解了它們,也就理解了原理。
什麼是補碼? —— 一種表示數字的編碼(廢話)
關鍵是為什麼要有它? ——因為計算機底層只能處理加法,所以正數加負數就是一個正數減正數,我們想把它轉換成正數加正數,所以補碼就被發明了,補碼用來將 正數不管,負數變成正數,這樣就滿祥告足了要求。
"補"字什麼意思呢? ——來源於互補的概念,說到互補得說同餘,兩個數mod M 余數相同就說他們模M同餘,如果這兩個數絕對值相加為M,就說他們互補隱並(-4和8模12同餘,4+8=12所以-4 和8互補)。 M在我們進行運算時就相當於給 定長 的數 的大小,比如8位定長,則M就是256(為什麼,看下面)
為什麼要有M? ——舉鍾表這個最常被舉的例子,鍾表的M是12因為格數不能超過12,4+8=12,所以再鍾表上順時針走4格和逆時針走8格是不是一樣的,
我們的8位定長256也是同樣的道理,把0->255(8位能表示的數個數)填在圈中,這樣 -1與255互補,-2與254互補,-127與129互補 (相加都為256,互補,當然也同餘), 前面我們說只取負數的補碼,正數不管,所以我們令-1的補碼是255.....-127的補碼是129( 負數的補碼為M-|這個數|,正數不變 ), 神奇的事情發生了,負數的補碼最高位正好在二進制中為1,而正數不是,於是正數的補碼和負數的補碼就這樣隔開了,
剩一個數給誰? ——為了公平表示正負數,我們把256個數分給-127->127,但是還有一個呢
|-128|+128=256,我們到底要哪個呢,對了,因為負數要有1這個符號位做區分,所以256就用來表示-128了,這也大概是為什麼八位正負值表示-128->127的原因吧(注意-128在原碼中是沒有定義的,因為原碼中10000000,1就是符號位,沒有補碼的含義,他和00000000都是0)。
那為什麼正負數要隔開呢? ———為了製造出類似原碼的符號位,灶宴跡這樣補碼轉換原碼的時候,就可以區分轉換了。正數不變,負數取反加一。
為什麼是取反加一呢? ———根據原碼負數時 [x]補=M-|x|推出來的 ,這是原始式子,也挺好記的比如-8的補碼就是256-8 = 248,-128的就是128,。
那為什麼原碼取反加一為補碼,補碼取反加一為原碼? ———因為負數的補碼,根據前面所說和原碼是互補的,根據[x]補=M-|x|推出來的公式。肯定是相同的,所以求原碼也就相當求補了。
❺ 什麼是補碼
補碼是用來解決負數在計算機中的表示問題的。正數的補碼就是其本身;負數的補碼是在其原碼的基礎上, 符號位不變, 其餘各位取反, 最後+1. (即在反碼的基礎上+1)。
例:1-1 = 1+(-1) = 00000001(原碼) + 100000001(原碼) =00000001(反碼) +11111110(反碼) = 11111111(反碼)=10000000(原敗帆碼) = -0
用反碼運算時,結果為-0,雖然+0和-0都是0,但是看起來總是覺得怪怪的,何況0帶符滲枯拍號沒有任何意義,並且出現了兩個能表示0的二進制數00000000和10000000。
這讓嚴謹的程序員們如何能接受,為了消除歧義,於是出現了反碼。
(5)生活中哪些例子可以說明補碼擴展閱讀
補碼這個編碼方案要解決的是如何在機器中表示負數,其本質意義為用一個正數來表示這個正數對應的負數。所謂-20的補碼是指:如何在機器中用補碼形式表示-20。
具體過程是這樣的:將20的二進制形式直接寫出00010100,然後所有位取反變成11101011,再加1變成了11101100。最簡單的補碼轉換方式,不必去理會轉換過程中的符號位,只關注轉換前和最終轉換後的符號位就行。
補碼的總前提是機器數,不要忘了機器數的符號位含義,最高位為0表示正數,最高位為1表示負數,而最高位是指機器字長的最左叢羨邊一位。位元組數100B,最高位為00000100中的最左邊的0。
❻ 在單片機中,什麼是補碼最好能給出定義和例子,謝謝
補碼,是正負數存入計算機時的一種形式。
利用補碼,就可把減法,轉換成加法。
利用補碼,目的是減小硬體的復雜性。
補碼,並不難理解,只是被計算機磚家搞亂了概念。
其實,小學生,都知道下面這些常識:
鍾表,倒撥 1 小時,可以用正撥 11 小時來代替。
倒撥 20 分,可以用正撥 40 分來代替。
-π/2 處的三角函數,與+3π/4 處的函數值相同。
在兩位十進制數的條前前件下,減一,可以用+99 代替。虧高
如:24-1=2324+99=(1) 23。
在上面所說的,就是「補數」的概念。
為了求補數,還要知道一個「周期」,也可稱為「模」。
-------
在計算機中,沒有數字,都是二進制代碼。
補數,也就改稱為「補碼」了。
八位二進制是一個位元組。范圍是:0000 0000~1111 1111。
寫成十進制,就是 0~255,周期,就是 256。
-1,其補碼就是 256-1=255=1111 1111。
-2,其補碼就是 256-2=254=1111 1110。
-3,其補碼就是 256-3=253=1111 1101。
... ...
-128,其補碼就是 256-128=128=1000 0000。
-------
補碼的定義式:
正數的補碼慧空清 = 該數字本身。
負數的補碼 = 模+這個負數。
-------
補碼的應用:
6-2=4,用補碼計算如下:
0000 0110
+1111 1110
----------
(1) 0000 0100
進位的 1,舍棄即可。
❼ 什麼是補碼什麼是ASCII碼能舉例說明嗎
ascii碼就是在計算機里用一堆0和1表示現實生活中的一個符號,比如 A ,比如字元 0 等,規定的岩鉛手是什麼樣地 0和1 的排列表示什麼符號,這堆 0和1的組合如果看做二進制數,就稱其為某個字元的 ascii 值,比如字元0的ascii值是 01100000。
補碼你粗嫌可以認為是數在計算機中的一種存儲形式,比如 -2,表示成二進制是 10000010 ,但是在計算機里並不是存儲這個序列,而是存儲的 -2 的補碼,規則是保持符號位不變,其餘位激陵取反+1,即 11111110 。
❽ 補碼怎麼算舉例說明.
+62原碼01000001,反碼和補碼與原碼相同
-62原碼11000001:
反碼10111110
補碼10111111
例如:
+64 原碼=反碼=補碼=0100 0000。
-10 原碼=1000 1010;
-10 反碼=1111 0101;
-10 補碼=1111 0110。
以補碼相加,得:0011 0110,這是+54 的補碼。
(8)生活中哪些例子可以說明補碼擴展閱讀:
假設弊圓當前時針指向8點,而准確時間是6點,調整時間可有以下兩種撥法:一種是倒撥2小時,即8-2=6;另一種是順撥10小時,8+10=12+6=6,即8-2=8+10=8+12-2(mod 12).在12為模的系統里,加10和減2效果是一樣的,因此凡是減2運算,都可以用加10來代替。
若用一般公租廳塌式可表示為:a-b=a-b+mod=a+mod-b。對「模」而言,2和10互為補數。實際上,以12為模的系統中,11和1,8和4,9和3,7和5,6和6都有這個特性,共同的特點是兩者伏肢相加等於模。
❾ 計算機中的補碼是什麼意思,能給最好給幾個例子
計算機中的補碼是什麼意思?
計算機中的補碼,就是「代替負數」的正數。
用補碼(正數)代替了負數,計算機中,就沒有負數了。
同時,也就沒有減法運算了。
使用補碼的目的,就是:簡化硬體。
--------------------
補碼(正數)怎麼就能代替負數呢?
用十進制來說明,舉脊比較容易理解。
你看:
25 - 1 = 24
25 + 99 = (一百) 24
你如果舍棄進位,+99 就能代替-1;加法,也就能代替減法。
同樣,+98 也可以代替-2。
這些正數,就是「負數的補數」。
公式: 補數 = 負數 + 10^n, n 是補數的位數。
----------------------
計算機用二進制,補數,就叫做補碼了。
對於 8 位 2 進制,補碼 = 負數 + 2^8 = 負數 + 256。
所以,-1 的補碼就是 255 = 1111 1111 (二進制)。做和
-2 的補碼就是 1111 1110。
。。。純答盯
正數,不需要變換,必須直接參與運算。
所以,正數,它就沒有補碼。
----------------------
求 7-2 = 5,用補碼計算如下:
+7 = 0000 0111
[-2]補 = 1111 1110
---相加-------------
得:(1) 0000 0101 = +5
舍棄進位,結果,就是非常正確的。
----------------------
補碼,就是補碼,與原碼反碼毫無關系。
補碼,本來,是很簡單的,也很容易理解的。
但是,從「原碼反碼取反加一。。。」來學習補碼,就不容易理解了。
那麼,「原碼反碼。。。」,老師總是講這些,是想干什麼呢?
這些老外腦子不好,所以才弄出這些騷操作。
❿ 一文搞懂原碼、反碼、補碼
需要聲明的是,本文涉及到的數字及運算均基於 8位bit 下的值。
最高位為符號位,0代表正數,1代表負數,非符號位為該數字絕對值的二進製表示。
如:
127的原碼為0111 1111
-127的原碼為1111 1111
正數的反碼與原碼一致;
負數的反碼是對原碼按位取反,只是 最高位(符號位)不變 。
如:
127的反碼為0111 1111
-127的反碼為1000 0000
正數的補碼與原碼一致;
負數的補碼是該數的 反碼加1 。
如:
127的補碼為0111 1111
-127的補碼為1000 0001
總結一下就是:
下面就來探討一下,為雹洞雀啥要用補碼來表示數字。
如果計算機內部採用原碼來表示數,那麼在進行加法和減法運算的時候,需要轉化為兩個絕對值的加法和減法運算;
計算機既要實現加法器,又要實現減法器,代價有點大,那麼可不可以只用一種類型的運算器來實現加和減的遠算呢?
很容易想到的就是 化減為加 ,舉一個生活中的例子來說明這個問題:
時鍾一圈是360度,當然也存在365度,但其實它和5度是一樣的;
相同的道理,-30度表示逆時針旋轉30度,其與順時針旋轉330度是一樣的;
這里數字360表示時鍾的顫棚一圈,在計算機里類似的概念叫 模 ,它可以實現 化減為加 ,本質上是將 溢出的部分捨去 而不改變結果。
易得,單位元組(8位)運算的模為256=2^8。
在沒有符號位的情況下,127+2=129,即:
這時,我們將最高位作為符號位,計算機數字均以補碼來表示,則1000 0001的原碼為減1後按位取反得1111 1111,也就是-127。
也就是說,計算機里的129即表示-127,相當於模256為一圈,順時針的129則和逆時針127即-127是一樣的。
故可以得到以下結論:
負數的補碼為 模減去該數的絕對值 。
如-5的補碼為:
-5=256-5=251=1111 1011(二源早進制)
同樣的,臨界值-128也可以表示出來:
-128=256-128=128=1000 0000(二進制)
但是正128就會溢出了,故單位元組(8位)表示的數字范圍為-128--127。
最後,我們來看一下,補碼是如何通過模的 溢出舍棄 操作來完成 化減為加 的!
16-5=16+(-5)=11
1 0000 1011將溢出位捨去,得0000 1011(二進制)=11。
好的,本文分享就到這里,希望能夠幫助到大家。