Ⅰ 計算機二進制補碼
8位的二進制補碼,可以表示-128~+127;
16位的二進制補碼,可以表示-32768~+32767。
實用的時候,一般就是從這兩種之中選擇一種。
8位的夠用了,就不要選16位的。
Ⅱ 二進制的補碼多少位
1、正數的補碼表示:
正數的補碼 = 原碼
負數的補碼 = {原碼符號位不變} + {數值位按位取反後+1} or
= {原碼符號位不變} + {數值位從右邊數第一個1及其右邊的0保持不變,左邊安位取反}
以十進制整數+97和-97為例:
+97原碼 = 0110_0001b
+97補碼 = 0110_0001b
-97原碼 = 1110_0001b
-97補碼 = 1001_1111b
2、純小數的原碼:
純小數的原碼如何得到呢?方法有很多,在這里提供一種較為便於筆算的方法。
以0.64為例,通過查閱可知其原碼為0.1010_0011_1101_0111b。
操作方法:
將0.64 * 2^n 得到X,其中n為預保留的小數點後位數(即認為n為小數之後的小數不重要),X為乘法結果的整數部分。
此處將n取16,得
X = 41943d = 1010_0011_1101_0111b
即0.64的二進製表示在左移了16位後為1010_0011_1101_0111b,因此可以認為0.64d = 0.1010_0011_1101_0111b 與查詢結果一致。
再實驗n取12,得
X = 2621d = 1010_0011_1101b 即 0.64d = 0.1010_0011_1101b,在忽略12位小數之後的位數情況下,計算結果相同。
3、純小數的補碼:
純小數的補碼遵循的規則是:在得到小數的源碼後,小數點前1位表示符號,從最低(右)位起,找到第一個「1」照寫,之後「見1寫0,見0寫1」。
以-0.64為例,其原碼為1.1010_0011_1101_0111b
則補碼為:1.0101_1100_0010_1001b
當然在硬體語言如verilog中二進製表示時不可能帶有小數點(事實上不知道哪裡可以帶小數點)。
4、一般帶小數的補碼
一般來說這種情況下先轉為整數運算比較方便
-97.64為例,經查詢其原碼為1110_0001.1010_0011_1101_0111b
筆算過程:
-97.64 * 2^16 = -6398935 = 1110_0001_1010_0011_1101_0111b,其中小數點在右數第16位,與查詢結果一致。
則其補碼為1001_1110_0101_1100_0010_1001b,在此採用 負數的補碼 = {原碼符號位不變} + {數值位按位取反後+1} 方法
5、補碼得到原碼:
方法:符號位不動,幅度值取反+1 or符號位不動,幅度值-1取反
-97.64補碼 = 1001_1110(.)0101_1100_0010_1001b
取反 = 1110_0001(.)1010_0011_1101_0110b
+1 = 1110_0001(.)1010_0011_1101_0111b 與查詢結果一致
6、補碼的拓展:
在運算時必要時要對二進制補碼進行數位拓展,此時應將符號位向前拓展。
-5補碼 = 4'b1011 = 6'b11_1011
ps.原碼的拓展是將符號位提到最前面,然後在拓展位上部0.
-5原碼 = 4『b』1101 = 6'b10_0101,對其求補碼得6'b11_1011,與上文一致。
Ⅲ 計算機原碼反碼補碼怎麼算
計算機原碼反碼補碼計算方法:
1、原碼
原碼就是符號位加上真值的絕對值,即用第一位表示符號,其餘位表示值。比如如果是8位二進制:
[+1]原 = 0000 0001
[-1]原 = 1000 0001
第一位是符號位. 因為第一位是符號位, 所以8位二進制數的取值范圍就是:[1111 1111 , 0111 1111]
即[-127 , 127]
原碼是人腦最容易理解和計算的表示方式。
2、反碼
反碼的表示方法是:正數的反碼是其本身。負數的反碼是在其原碼的基礎上, 符號位不變,其餘各個位取反。
[+1] = [00000001]原 = [00000001]反
[-1] = [10000001]原 = [11111110]反
可見如果一個反碼表示的是負數,人腦無法直觀地看出來它的數值。通常要將其轉換成原碼再計算。
3、補碼
補碼的表示方法是:正數的補碼就是其本身。負數的補碼是在其原碼的基礎上,符號位不變,其餘各位取反,最後+1。(即在反碼的基礎上+1)。
[+1] = [00000001]原 = [00000001]反 = [00000001]補
[-1] = [10000001]原 = [11111110]反 = [11111111]補
對於負數,補碼表示方式也是人腦無法直觀看出其數值的。通常也需要轉換成原碼在計算其數值。
(3)電腦補碼一般是多少擴展閱讀:
原碼,反碼和補碼是完全不同的。既然原碼才是被人腦直接識別並用於計算表示方式,為何還會有反碼和補碼呢?
首先,因為人腦可以知道第一位是符號位,在計算的時候我們會根據符號位,選擇對真值區域的加減。但是對於計算機,加減乘數已經是最基礎的運算,要設計的盡量簡單。計算機辨別"符號位"顯然會讓計算機的基礎電路設計變得十分復雜。於是人們想出了將符號位也參與運算的方法。我們知道,根據運演算法則減去一個正數等於加上一個負數,即: 1-1 = 1 + (-1) = 0 , 所以機器可以只有加法而沒有減法,這樣計算機運算的設計就更簡單了。
於是人們開始探索將符號位參與運算,並且只保留加法的方法。
Ⅳ 計算機中數的補碼的規定的范圍是多少
將原數用二進製表示,最高位是符號位(0表示正數,1表示負數),就是原碼表示法。在計算機中的數據都是以補碼存放的,只有這樣才能減輕CPU負擔。提到補碼,就得先說反碼,計算機中是這樣規定反碼的,如果是正數,則按原碼形式不變,如127仍為0111,1111;而如果為負數則,第一位為1,其他各位取反(即0變為1,1變為0),如原碼-127(1111,1111),表示為1000,0000。補碼同上,如果是正數,則按原碼形式不變,如127仍為0111,1111;如果為負數,則除第一位為1外,其他各位取反加1,如-127,先取反為1000,0000,然後加1,為1000,0001。但1000,0000比較特殊,用它來表示-128,由此我們可知用補碼表示的、帶符號的八位二進制數,可表示的整數范圍是-128~+127。因此可以得出結論:「正數的反碼、補碼均與原碼相同;負數的反碼是原碼各位取反;補碼則是反碼+1」。
Ⅳ 計算機原碼補碼的計算
計算機原碼補碼的計算方法:
1、原碼:在計算機中的機器字長的最高位(最左邊)表示正負,0為正數,1為負數,原碼就是最高位是符號位,其餘位表示數值(絕對值)大小。
2、反碼:正數的反碼就是其本身(原碼)不變,而負數的反碼就是在負數原碼的基礎上符號位保持不變,其餘位按位取反。
3、補碼:正數的補碼就是其本身(原碼),而負數的補碼就是在原碼的基礎上符號位保持不變其餘位按位取反,然後再+1,即在反碼的基礎上+1。
總結:正數的原碼、反碼和補碼都一樣,都等於原碼。負數的反碼就是在原碼的基礎上符號位不變其餘位按位取反,負數的補碼就是在反碼的基礎上+1。
(5)電腦補碼一般是多少擴展閱讀:
原碼(true form)是一種計算機中對數字的二進制定點表示方法。原碼表示法在數值前面增加了一位符號位(即最高位為符號位):正數該位為0,負數該位為1(0有兩種表示:+0和-0),其餘位表示數值的大小。
原碼不能直接參加運算,可能會出錯。例如數學上,1+(-1)=0,而在二進制中00000001+10000001=10000010,換算成十進制為-2。顯然出錯了。所以原碼的符號位不能直接參與運算,必須和其他位分開,這就增加了硬體的開銷和復雜性。
在計算機系統中,數值一律用補碼來表示和存儲。原因在於,使用補碼,可以將符號位和數值域統一處理;同時,加法和減法也可以統一處理。
補碼「模」概念的引入、負數補碼的實質、以及補碼和真值之間的關系所揭示的補碼符號位所具有的數學特徵,無不體現了補碼在計算機中表示數值型數據的優勢,和原碼、反碼等相比可表現在如下方面:
(1)解決了符號的表示的問題;
(2)可以將減法運算轉化為補碼的加法運算來實現,克服了原碼加減法運算繁雜的弊端,可有效簡化運算器的設計;
(3)在計算機中,利用電子器件的特點實現補碼和真值、原碼之間的相互轉換,非常容易;
(4)補碼表示統一了符號位和數值位,使得符號位可以和數值位一起直接參與運算,這也為後面設計乘法器除法器等運算器件提供了極大的方便。
Ⅵ 計算機補碼是什麼
1
在計算機系統中,數值一律用補碼來表示(存儲).
使用補碼,可以將符號位和其他位統一處理;同時,減法也可按加法來處理.另外,兩個用補碼表示的數據相加時候,如果最高位(符號位)有進位,則進位被舍棄.
2
補碼與原碼的轉換過程幾乎是相同的
數值的補碼表示也分兩種情況:
(1)正數的補碼:與原碼相同.
例如,+9的補碼是00001001
(2)負數的補碼:符號位為1,其餘位為該數絕對值的原碼按位取反;然後整個數加1
例如,-7的補碼:因為是負數,則符號位為「1」,整個為10000111;其餘7位為-7的絕對值+7的原碼
0000111按位取反為1111000;再加1,所以-7的補碼是11111001.
已知一個數的補碼,求原碼的操作分兩種情況:
(1)如果補碼的符號位為「0」,表示是一個正數,所以補碼就是該數的原碼.
(2)如果補碼的符號位為「1」,表示是一個負數,求原碼的操作可以是:符號位為1,其餘各位取反,然後再整個數加1.
例如,已知一個補碼為11111001,則原碼是10000111(-7):
因為符號位為「1」,表示是一個負數,所以該位不變,仍為「1」;
其餘7位1111001取反後為0000110;再加1,所以是10000111.
在「閑扯原碼、反碼、補碼」文件中,
沒有提到一個很重要的概念「模」.
我在這里稍微介紹一下「模」
的概念:
「模」是指一個計量系統的計數范圍.如時鍾等.計算機也可以看成一個計量機器,
它也有一個計量范圍,即都存在一個「模」.
例如:時鍾的計量范圍是0~11,模=12.
表示n位的計算機計量范圍是0~2^n-1,模=2^n.
【註:n表示指數】「模」實質上是計量器產生「溢出」的量,它的值在計量器上表示不出來,計量器上只能表示出模的余數.任何有模的計量器,均可化減法為加法運算.
例如:
假設當前時針指向10點,而准確時間是6點,調整時間可有以下兩種撥法:
一種是倒撥4小時,即:10-4=6
另一種是順撥8小時:10+8=12+6=6
在以12模的系統中,加8和減4效果是一樣的,因此凡是減4運算,都可以用加8來代替.對「模」而言,8和4互為補數.實際上以12模的系統中,11和1,10和2,9和3,7和5,6和6都有這個特性.
共同的特點是兩者相加等於模,對於計算機,其概念和方法完全一樣,n位計算機,設n=8,
所能表示的最大數是11111111,若再
加1稱為100000000(9位),但因只有8位,最高位1自然丟失.又回了00000000,所以8位二進制系統的模為2^8.
在這樣的系統中減法問題也可以化成加法問題,只需把減數用相應的補數表示就可以了.把補數用到計算機對數的處理上,就是補碼.
Ⅶ 什麼叫做補碼
補碼,應該是最容易理解的知識了。
小學生都可以自己摸索出來。
按照四位二進制來說,共有 16 組代碼。
數字 0 的二進制,就是 0000,
數字 1 的二進制,就是 0001,
。。。
數字 7 的二進制,就是 0111。
可見下表:
四位補碼
總結:
零和正數的補碼,就是數字本身(也可轉為二進制)。
負數的補碼,就是: 16+這個負數。
(如果是 8 位二進制,就改用: 256 + 這個負數。)
--------
整個推算過程,並不需要使用「原碼反碼符號位」這些垃圾。
計算時,使用十進制,簡單方便。得出的補碼,當然也是十進制。
如果需要二進制,就變換一下。
補碼,很難嗎?
如果不涉及原碼反碼符號位,就一點也不難。
-----------
補碼有什麼用呢?
利用補碼,可以把減法運算,轉換成加法。
(所以,在計算機中,有一個加法器,就夠用了。)
例如:6-2 = 4,用補碼運算如下:
6 的補碼是 0110、-2 的補碼是 1110。
0110 + 1110 = (1) 0100 (= 4 的補碼)
(括弧中的 1,是進位,舍棄不要了。)
注意:
如果運算結果超出了-8~+7 的范圍,結果將是錯的。
這種現象稱為「溢出」。
再注意一下:進位,並不等於溢出。
---------
因為補碼的這個特性,所以,在計算機中,只是使用補碼存放數據。
而原碼反碼,在計算機中,都是不存在的。
原碼反碼 的用途,只是用於「筆算」。
其實,筆算的方法,並非只有「取反加一」。
原碼反碼,只是磚家為了增加收入,瞎編的垃圾而已。
所以,大家,完全不必在原碼反碼上浪費時間精力。
但是,考試怎麼辦?
呃 ...,千萬別跟老師較勁,他怎麼講,你就怎麼答吧。
Ⅷ 計算機中什麼叫補碼啊``` 怎麼算的
補碼,在計算機中,有所應用。
但是,補碼的來源,是由演算法導出的,和計算機無關。
比如,一個小孩,很小的。
他只認識 100 個數,也不會做減法。
那麼,減一,就可以告訴他,用加99 代替:
36 - 1 = 35
36 + 99 = (1) 35
忽略進位,結果不是一樣的嗎?
99,就是-1 的補數。
演算法:補數=模+負數。
其中的「模」,是計數系統中,數字個數的總數。
補碼,也就是二進制的補數。
八位二進制,共有 256 個數字,模,就是 256。
255(1111 1111),就是-1 的補碼;
254(1111 1110),就是-2 的補碼;
... ...
128(1000 0000),就是-128 的補碼。
演算法:
補碼=256 +負數。
正數,直接參加運算即可,用不著轉換。