1樓:沙里波特
帶符號數,有三種表示方法,即:原碼、反碼和補碼。
但是,在計算機系統中,數值一律用【補碼】來表示和儲存。
所以,在計算機系統中,原碼和反碼,都是不存在的。
使用補碼的意義:可以把減法或負數,轉換為加法運算。
因此,就能簡化計算機的硬體。
補碼的概念,來自於:補數。
比如鐘錶,時針轉一圈,週期是 12 小時。
那麼,倒撥 3小時,可以用正撥 9小時代替。
9,就是-3 的補數。 計算方法: 9 = 12-3。
同理,分針倒撥 x分,可以用正撥(60-x)代替。
60,是分針的週期。
懂得三角函式的同學,都知道,三角函式的週期是 2π。
那麼,在和處的函式值是相同的,可互換。
演算法是:
當你使用兩位十進位制數:0~99,週期就是 一百。
那麼,減一,就可以用 +99 代替。
捨棄進製,這兩種演算法,功能就是相同的。
於是,99 就是 -1 的補數。
計算: 補數 = 週期 + 負數
對於其它負數,自己去求補數吧。
計算機中使用二進位制,補數,就改稱為【補碼】。
八位二進位制是:0000 0000~1111 1111。
相當於十進位制:0~255,週期就是 256。
那麼,-1,就可以用 255 = 1111 1111 代替。
所以:-1 的補碼,就是 1111 1111 = 255。
同理:-2 的補碼,就是 1111 1110 = 254。
繼續:-3 的補碼,就是 1111 1101 = 253。
最後:-128 的補碼,就是 1000 0000 = 128。
負數補碼的計算公式:【 256 + 這個負數 】。
式中的 256 = 2^8,是八位二進位制的週期。)
正數,並不存在補碼的問題。
所以,正數,並沒有補碼,可以直接運算。
也有人亂說:正數本身就是補碼。)
求解算式: 7-3 = 4。
計算機中,並沒有減法器,必須改用補碼相加。
列豎式如下:
7 的補碼=
3的補碼=
相加---得: (1)= 4 的補碼。
捨棄進製,只保留八位,結果完全正確。
借助於補碼,可以簡化計算機的硬體。
原碼和反碼,都沒有這種功能。
所以,在計算機中,根本就沒有原碼和反碼。
它們都是什麼? 就不用關心了。
2樓:敖秋英劍錦
1.基礎概念和計算方法。
在探求為何機器要使用補碼之前,讓我們先了解原碼,反碼和補碼的概念。對於乙個數,計算機要使用一定的編碼方式進行儲存。
原碼,反碼,補碼是機器儲存乙個具體數字的編碼方式。
二進位制數反碼和補碼的演算法
3樓:做而論道
在計算機系統中,數值,一律採用補碼表示和儲存。
在計算機中,原碼反碼,都是不存在的。
因此,原碼反碼,根本就沒有任何用處,不必討論。
補碼,實際上,它就是乙個「代替負數」的正數。
使用了補碼(正數)之後,在計算機中,就沒有負數了。
同時,也就沒有了減法運算。
因此,不但能簡化演算法,而且順便就能簡化計算機的硬體。
正數,怎麼能代替負數呢?
你看看兩位十進位制數(0~99)吧:
25 + 99 = 一百) 24
只要你捨棄進製,只保留兩位,+99 就能代替-1。
+99,這就是-1 的補數。
對應關係:補數=負數+計數週期(10^2 = 100)。
計算機中,使用二進位制,補數,也就改稱為:補碼。
8 位 2 進製數,其計數週期,就是:2^8 = 256。
-1 的補碼,就是:-1 + 256 = 255 = 1111 1111 (二進位制)。
對嗎? 分別用十進位制、二進位制,計算一下試試:
只要捨棄進製,這兩種演算法,結果,就是相同的。
同理,-2 補碼就是:254 = 1111 1110。
128 的補碼是:128 = 1000 0000。
零和正數,必須直接參加運算,不可變換。
零和正數,不需要變換,也就不存在「正數的補碼。
補碼的**和意義,就是這些。
你如果從「原碼反碼符號位」開始學補碼,肯定是「學不懂」的。
老外腦子不好用,週期、等效什麼的,當然也是搞不懂的。
因此,才編造了「原碼反碼。。。一大灘垃圾!
其實,那些都是無稽之談,隨口亂講的,並無任何理論依據。
而且,在八位的原碼反碼中,都沒有-128。
那麼,-128 的補碼,你們怎麼求呢?
4樓:道振梅理雲
計算機裡的二進位制數有八位、十六位等,下面以八位為例。
19的二進位制數為:0001
那麼+19原碼為。
反碼為。補碼為。
那麼-19原碼為。
左邊第一位表示正負數,正數為0,負數為1)反碼為。
補碼為。
5樓:敏印枝徭未
原碼:符號位:正數用0表示;負數用1表示。反碼:
除符號位外,其它位按位取反,即0變1,1變0補碼:
反碼的基本上加1
二進位制的原碼、反碼、補碼、移碼
6樓:做而論道
數值,在計算機系統中,一律採用補碼表示和儲存。
在計算機中,原碼和反碼,都是不存在的。
你只要掌握「數值與補碼」的互換,就可以了。
當碼長八位時:零和正數,不用變換。負數,加上 256,就是補碼了。
原碼反碼取反加一符號位不變,這些,都是幹什麼的呢?
老外數學不好,弄不出來轉換公式,才需要弄哪些個騷操作。
移碼,應用場合有限。
8位二進位制原碼 補碼 反碼的表示範圍各是多少 怎麼算的?
7樓:夢到雲淡風輕
8位二進位制原碼的表示範圍:-127~+1278位二進位制反碼的表示範圍:-127~+1278位二進位制補碼的表示範圍:
128~+127n位二進位制原碼和n位二進位制反碼:-2^(n-1)-1~+2^(n-1)-1;n位二進位制補碼:-2^(n-1)~+2^(n-1)-1。
8樓:
為什麼規定範圍-128到127?而不是規定其他範圍?因為8位數,除去一位符號位,每一位只有0或1,那就有128種情況,每種情況按權值計算,就是0到127,加上正負號,就是256個數,但是+0和-0取反加一後都是00000000,所以就是255個數,但是這樣就會剩下乙個10000000什麼都不表示,但是10000000如果看作無符號數就是128,而且第一位是1,所以用來表示-128。
知道了嗎?不要動不動就說規定的,任何事存在就有它的道理。
9樓:做而論道
這些範圍,不是算的,是規定的。
10樓:誕淚木
8位二進位制。
原碼的表示範圍:
127【1,1111111】~-0【1,000000】加上+127【0,1111111】~+0【0,0000000】
一共256位。
8位二進位制反碼的表示範圍:
127【1,1111111】~-0【1,000000】加上+127【0,1111111】~+0【0,0000000】
一共256位。
8位二進位制補碼的表示範圍:根據溢位進製拋棄-0(原碼)【1,000000】(的補碼)【0,0000000】= 0(原碼)【0,0000000】(的補碼)【0,00000000】向重合了,所以有位。(記住有256個)
所以剩下個補碼【1,0000000】沒有原碼。所以規定為(就好像做題時設x,代表變數一樣)-128位其原碼。
二進位制的原碼、補碼、反碼詳解
11樓:象拔蚌燒賣
計算機中,並沒有原碼和反碼,只是使用補碼,代表正負數。
使用補碼的意義:可以把減法或負數,轉換為加法運算。從而簡化計算機的硬體。
比如鐘錶,時針轉一圈,週期是 12 小時。
倒撥 3 小時,可以用正撥 9 小時代替。
9,就稱為-3 的補數。
計算方法:12-3 = 9。
對於分針,倒撥 x 分,就可以用正撥 60-x 代替。
如果,限定了兩位十進位制數 (0~99),週期就是 100。
那麼,減一,就可以用 +99 代替。
忽略進製,只取兩位數,這兩種演算法,結果就是相同的。
於是,99 就是 -1 的補數。
其它負數的補數,大家可以自己求!
求出了負數的補數,就可用加法,代替減法了。
計算機中使用二進位制,補數,就改稱為【補碼】。
常用的八位二進位制是:0000 0000~1111 1111。
它們代表了十進位制:0~255,週期就是 256。
那麼,-1,就可以用 255 = 1111 1111 代替。
所以:-1 的補碼,就是 1111 1111 = 255。
同理:-2 的補碼,就是 1111 1110 = 254。
繼續:-3 的補碼,就是 1111 1101 = 253。
最後:-128,補碼是 1000 0000 = 128。
計算公式:負數的補碼=256+這個負數。
正數,直接運算即可,不需要求補碼。
也可以說,正數本身就是補碼。
補碼的應用如: 7-3 = 4。
用補碼的計算過程如下:
7 的補碼=0000 0111
3的補碼=1111 1101
相加---得: (1) 0000 0100 = 4 的補碼。
捨棄進製,只保留八位,作為結果即可。
這就是:使用補碼,加法就代替了減法。
所以,在計算機中,有乙個加法器,就夠用了。
原碼和反碼,都沒有這種功能。
原碼和反碼,毫無用處。計算機中,根本就沒有它們。
12樓:黑科技
在計算機中所有的資料都是以二進位制儲存的。
中機器數中,使用最高位來表示數字的**:1為負,0為正;
乙個字長為8為。
單看1000 0011這個數,不知道是機器數還是二進位制數,所以引出了機器數的真值概念。
機器數的真值就是機器數所對應的真值的數值;
如:1000 0011 = 3;
符號位:首先確定乙個數的正負,如果是正數,首位使用0表示,如果是負數,首位用1表示。
有效位:真值的絕對值轉化為二進位制形式。
符號為和有效位拼接到一起。
正數:正數的反碼和原碼相同。 +3 :0000 0011【原碼】 0000 0011【反碼】
負數:符號位不變,其餘各位直接取反,二進位制只有兩種狀態:1->0;0->1; -3:
1000 0011【原碼】 1111 1100【反碼】
正數:正數的原碼反碼補碼全部相同 +3: 0000 0011【原碼】 0000 0011【反碼】 0000 0011【補碼】
負數:求得原碼,再求反碼,中最後一位+1,這就是負數的補碼 -3:1000 0011【原碼】 1111 1100【反碼】 1111 1101【補碼】
反碼:中沒有計算機的時候只設計了加法器,沒有減法器,使用加法計算來表示減法,補碼:反碼解決了沒有減法的問題,但是會出現絕對值相同的正負兩個數相加會出現-0情況,那麼在計算機中不能出現0的表現不唯一情況,所以採用補碼進行修正。
注】1、採用補碼計算; 2、正數補碼、反碼、原碼相同; 3、負數首位符號位為1;
例:正數相加
例:減法(可以看做負數相加)
56為正數,補碼和原始碼一樣,求出-33的補碼,然後將兩個數的補碼相加得出結果。
正數:補碼=反碼=原碼。
負數:補碼的補碼(首位不變,其餘取反,再加1)
正數:不變(原碼 = 反碼= 補碼)
負數:首位不變,其餘取反。
二進位制補碼怎麼計算的
1 正數的補碼表示 正數的補碼 原碼 負數的補碼 or 以十進位制整數 97和 97為例 97原碼 0110 0001b 97補碼 0110 0001b 97原碼 1110 0001b 97補碼 1001 1111b 2 純小數的原碼 純小數的原碼如何得到呢?方法有很多,在這裡提供一種較為便於筆算的...
二進位制補碼運算溢位判斷,計算機中二進位制加減法時,是如何判斷溢位的?
補碼運算的溢位判別方式為雙高位判別法,利用cs表示符號位是否進製,利用cp表示最高數值位是否進製。如果cs cp的結果為真,則代表發生了溢位 運算結果大於0則為負溢位,小於0則為正溢位 否則運算結果正確。例如 1000 0011 補碼為 3,原碼為 125 0000 0011 補碼為3,原碼為3 1...
十進位制轉二進位制原理,十進位制轉二進位制的這方法的數學原理是什麼啊?求大神詳解!
用2輾轉相除至結果為1 將餘數和最後的1從下向上倒序寫 就是結果 例如302 302 2 151 餘0 151 2 75 餘1 75 2 37 餘1 37 2 18 餘1 18 2 9 餘0 9 2 4 餘1 4 2 2 餘0 2 2 1 餘0 故二進位制為100101110 二進位制轉十進位制 從...