『壹』 計算機原碼反碼補碼怎麼算的
在計算機系統中,數值,一律用補碼來表示和存儲。
補碼,其實,就是一個「代替負數進行運算」的正數。
使用了補碼(正數)之後,在計算機中,就沒有負數了。
隨之而來的,就是:減法運算也都不存在了。
所以,藉助於補碼,計算機只需要配置一個加法器,就能走遍天下。
使用補碼的目的,就是:簡化計算機的硬體。
而原碼、反碼,都沒有這種功能,所以,計算機中,根本就不用它們。
所以,原碼和反碼或纖,只能在紙上寫一寫,在計算機中,都是不存在的。
---------------------
補碼(一個正數),怎麼就能代替負數呢?
你看時針:倒撥 3 小時,可以用正撥 9 小時代替吧?
你看三角函數:-π/2、+3π/2,兩者的函數值也是相同的。
10 進制數,如果限定只用 2 位 ,那麼就會有:
25 - 1 = 24
25 + 99 = (一百) 24
如果忽略進位一百(10^2),+99 就可以代替-1。
上面所說的這些正數,就是「負數的補數」。
求粗凱補數的公式是: 補數(即正數)= 負數 + 周期。
正數,必須直接就參加運算,不可再做任何變換。
就是說:正數,本身就已經是正數了,它並不存在什麼補數。
---------------------
計算機用二進制,補數,那就稱為「補碼」了。
8 位 2 進制的周期,是:2^8 = 256。
8 位 2 進制,總共可以組成 256 個代碼。
用其中的一半(即 128 個)代表負數:-1 ~ -128。
那麼:
-1 的補碼,就是:-1 + 256 = 255 = 1111 1111(二進制)。
-2 的補碼是:-2 + 256 = 254 = 1111 1110。
。。。
-128 的補碼,就是:128 = 1000 0000。
---------------------
至此,你就可以推出「補碼的定義式」:
當 X >= 0, [ X ]補 = X; 零和正數不用變換。
當 X < 0, [ X ]補 = X + 2^n。n 是補碼的位數。
這是通用的公式。
在嚴謹一點的書上,也有這種公式,你去翻翻書吧。
---------------岩團喚------
按照公式求補碼,是極為簡便的,而且還能理解補碼的意義。
由補碼,求其代表的數值,也是很方便的。
那麼,就不要學「原碼反碼取反加一符號位不變」了。
況且,原碼和反碼比補碼,還少了一個數,取反加一,也無法使用。
只有那些數學不好的老外,才弄這些「隔路」的花樣。
實際上,只要會「補碼與數值」的互換,就夠用了。
---------------------
算式 5 - 7 =-2,計算機用八位補碼計算如下:
5= 0000 0101
[-7]補碼 = 1111 1001
--相加-----------
得:(1) 1111 1110 = [-2]補碼
舍棄了進位,結果,就是正確的。
『貳』 計算機的原碼,反碼,補碼是怎麼回事可以舉例說明嗎
計算機的原碼,反碼,補碼是怎麼回事?
可以舉例說明嗎?
計算機中,並沒有原碼和反碼。
補碼是怎麼回事?
這得從「補數」談起。
計算機所計算的位數,是固定的,如八位機。。。
位數限定之後,就可以用「補數」代替負數,用加法實現減法運算。
如兩位十進制,-1,就可以用 +99 代替。
25 - 1 = 24
25 + 99 = (一百) 24
舍棄進位,只取兩位,這兩種演算法功能就是相同的。
99,就是-1 的補數。計算公式:補數 = 一百+負數。
一百,是兩位十進制數的計數周期。
-------------------------
計算機用二進制,補數,就改稱為:補碼。
八位二進制:0000 0000 ~ 1111 1111 (十進制 255)。
計數周期是:2^8 = 256。
所以,-1 補碼就是 256 + (-1) = 255 = 1111 1111(二進制)。
用不存在的「原碼反碼取反加一」來求,也是這個結果。
求負數補碼的計算公式: 周期 + 該負數。
正數,不用轉換。也可以說,正數自身就是補碼。
-------------------------
可以舉例說明嗎?
例如: 7-3 = 4。
用補碼的計算過程如下:
7 的補碼=0000 0111
-3的補碼=1111 1101
--相加-------------
得(1) 0000 0100 = 4 的補碼
舍棄進位,只保留八位作為結果,這就實現了 7-3。
『叄』 假定某台計算機的字長為8位,則十進制數255的補碼為
如果是8位無符號數,則十進制數255的補碼為11111111。
如果是有符號數,則該數已鎮盯經溢出,存儲的效果仍是11111111,但取出時系返洞統將解讀為-1。
字長8位的有符號范圍是-128~127,所以255越界了,沒有能夠表達255的補碼。對於無符號數255是8位字長能表達的最大數,無符號數的補碼都是自身,所以還是漏旅枯255;從這個意義上講,答11111111不該算錯。
補碼表示統一了符號位和數值位,使得符號位可以和數值位一起直接參與運算,這也為後面設計乘法器除法器等運算器件提供了極大的方便。
總之,補碼概念的引入和當時運算器設計的背景不無關系,從設計者角度,既要考慮表示的數的類型(小數、整數、實數和復數)、數值范圍和精確度,又要考慮數據存儲和處理所需要的硬體代價。因此,使用補碼來表示機器數並得到廣泛的應用,也就不難理解了。
『肆』 十進制數(+255)的原碼是多少十進制數(-255)的反碼是多少
十進制-67的原碼是01000011、反碼是10111100和補碼是10111101。
轉換規則:
1、負數的源碼為二進制前面加符號位;
-67=1000011(二進制)=11000011(原碼)
2、負數的反碼=原碼各位取反(除了最高位外);
11000011(原碼)=10111100(反碼)
3、負數的補碼=負數的反碼+00000001;
10111100(反碼)=10111101(補碼)
『伍』 什麼是補碼,其補碼如何計算
就比如-9補碼是11110111。
9的源碼為00001001,如果是負數的話,補碼為最高位置1,其餘取反也就是11110110,然後在最低位加1即可即11110111。
計算機中的負數是以其補碼形式存在的補碼=原碼取反+1。
一個位元組有8位可以表示的數值范圍在-128到+127。用二進製表示也就是10000000-01111111(注意:最高位表示符號)。最高位是1的都是負數最高位是0的都是正數。
(5)255的源碼和補碼擴展閱讀:
補碼乘法
補碼的乘法不具備【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
原碼表示法在數值前面增加了一位符號位(即最高位為符號位):正數該位為賀穗0,負數該位為1(0有兩種表示:+0和-0),其餘位表示數值的大小。
『陸』 c語言-255補碼
8位補碼表胡閉頌示 00000000零 00000001~01111111正態衡數1~127 10000000~11111111負數-128~-1 所以可以看到8位二進制數表示的范圍褲鄭是-128~127
『柒』 我把255除2取余得到了0 1111 1111的二進制數字,這個2進制數是計算機的源碼,還是算補碼
如果你用255轉換鋒埋成二進行基漏制數,那可以稱為原碼
對於計算機來說,你可以用原碼檔爛來計算也可以把它當成補碼來使用
11111111減1=11111110
11111110取反=00000001
等於1,如果拿11111111當成補碼,那麼它就是-1的補碼形式