1樓:匿名使用者
這需要有一定的基礎,就好像不知道1就無法解釋1+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)。 在這樣的系統中減法問題也可以化成加法問題,只需把減數用相應的補數表示就可以
了。把補數用到計算機對數的處理上,就是補碼。
另外兩個概念
一的補碼(one's complement) 指的是正數=原碼,負數=反碼
而二的補碼(two's complement) 指的就是通常所指的補碼
2樓:愛吃大肥羊
補碼是在原碼的基礎上,為簡化運算而發展出來的另一種表示帶符號二進位制數的方法,具體方法是:
(1)確定表示資料的二進位制數,通常是8位或16位;
(2)如果被表示的資料是非負的,則用原碼錶示;
(3)如果被表示的資料是負數,則把該數的絕對值表示成8位或16位二進位制數,然後對每一位取反,即原位上是0就改寫成1,原位上是1則改寫成0,再吧取反後的結果加1。
**********=負數取反+1
其實你這個問題只要回答了後面一個前面那個就自動回答了補碼:就是將負數用正數來表示
為什麼運算是用的是補碼?
簡單回答就是為了製作簡單。因為只要只做一個加法的運算就可以把所有的加,減,乘,除等表示出來。如果你不用補碼。
那將要製作別的運算器。那會浪費,而且製作也很複雜。對了,我們不應該用平常的想來來想為什麼會複雜。
因為計算機所做的都是二進位制。一般都32個0和1組成的數來相加。呵呵。
人腦,我想一般是不可能算的準確無誤。(只是說了個大概,要知道真正的,呵呵。大家一起把美國人的科學,偷來吧!)
3樓:
拿個簡單的例子說明,如果只能儲存一位的十進位制數,比如3,加上7後變為10,因為只能存一位數,進位1被捨去,結果變成零,這樣加7和效果和減3的效果一樣,7就可以當成是-3,也就是3的補碼。所以補碼就是加上後使其溢位結果恰為零的數,在二進位制中正數的補碼其最前一位必為1所以可以被理解成符號位。
4樓:
一句話:電腦其實很笨的,只會算兩個數1和0不知道什麼叫做負數.
所以我們發明的補碼,一種用正數的形式表示負數的值.
很好理解的.寫幾個小程式練習一下.
5樓:匿名使用者
兄弟你是不是學電腦科學與技術專業的,
首先求每個數的原碼,
如果你想求這個數的原碼,那麼把把原碼按位取反加1得的就補碼.
在計算機中二位數的最高位一般是符號位.
1,表示負,0表示正.
6樓:匿名使用者
一樓的都表態了,大傢伙就不羅嗦了……
補碼原理的確是這樣的……
7樓:
試試看吧,我想不會讓你失望的,呵呵!
8樓:匿名使用者
在計算機系統中,數值一律用補碼來表示(儲存)。
主要原因:使用補碼,可以將符號位和其它位統一處理;同時,減法也可按加法來處理。另外,兩個用補
碼錶示的數相加時,如果最高位(符號位)有進位,則進位被捨棄。
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)。 在這樣的系統中減法問題也可以化成加法問題,只需把減數用相應的補數表示就可以
了。把補數用到計算機對數的處理上,就是補碼。
另外兩個概念
一的補碼(one's complement) 指的是正數=原碼,負數=反碼
而二的補碼(two's complement) 指的就是通常所指的補碼
什麼是補碼加減運算溢位?判別溢位有哪幾種方法?並我說明工作原理。
9樓:嘿嘿噫嘿嘿
對於加法來說,運算元符號可能是:
1. [正] + [正]
2. [正] + [負]
3. [負] + [正]
4. [負] + [負]
對於減法來說:
1. [正] - [正] 相當於加法裡的(2)
2. [正] - [負] 相當於加法裡的(1)
3. [負] - [正] 相當於加法裡的(4)
4. [負] - [負] 相當於加法裡的(3)
加法裡,哪種操作會溢位?
對於一個有n位二進位制的補碼,其能表示的數字的範圍是:
-2^(n-1) ~ +2^(n-1)-1
負數:-2^(n-1) 到 -1
正數:1 到 2^(n-1)-1
那麼對於加法來說:
「[正] + [負]」或者「[負] + [正]」永遠都不會溢位,不管兩個運算元取值多少,結果都落在有效範圍內。
而超出有效範圍的兩種可能性就是:
1. [正] + [正]
2. [負] + [負]
那麼再看這兩種操作如果超出範圍的話,表現形式是什麼樣的:
定義兩個事件:
1. 最高有效位進位:對於n位補碼,第n-1位發生了進位;
2. 符號位進位:對於n位補碼,第n位符號位發生;
定義4個邊界值,以8位有效字長為例:
最大正127 (0111 1111)
最小正1 (0000 0001)
最小負-128(1000 0000)
最大負-1 (1111 1111)
列出所有組合(消除交換律重複)
符號位 最高有效位 是否發生溢位 最高有效位進位 符號位進位
[最小正] + [最小正] 0 0 0 0 n n n
[最小正] + [最大正] 0 0 0 1 y y n
[最小正] + [最小負] 0 1 0 0 n n n
[最小正] + [最大負] 0 1 0 1 n y y
[最大正] + [最大正] 0 0 1 1 y y n
[最大正] + [最小負] 0 1 1 0 n n n
[最大正] + [最大負] 0 1 1 1 n y y
[最小負] + [最小負] 1 1 0 0 y n y
[最小負] + [最大負] 1 1 1 0 y n y
[最大負] + [最大負] 1 1 1 1 n y y
所以,從規律上看凡是發生溢位操作,「最高有效位進位」和「符號位進位」必然是一個是y另一個是n,凡是不發生溢位的操作,必然是兩個全y或者兩個全n
這就是根據最高有效位和符號位發生進位的異或來判斷是否溢位規律。
下面是邏輯證明環節,很繞,證明方法很簡單,就是把幾種條件都列出來判斷一下即可:
[正]+[正]溢位,因為兩個都是正整數,所以符號位都是0,溢位時最高位發生了進位,但因為符號位是0,0加上進位的1是永遠不會發生進位的。所以對於前面定義的兩個事件:「最高有效位進位」發生了,「符號位進位」未發生。
[正]+[負]不溢位時,此時設正數範圍包括0:
如果結果為負整數,因為第二個運算元的符號位是1,結果的符號位也是1,那麼「符號位進位」未發生,同時「最高有效位進位」也未發生。因為如果發生了,會產生一個進位1,與符號位1相加會倒是符號位變化,而此時符號位是不變的,所以可以肯定兩個事件都沒有發生。
如果結果為正整數,那麼必然同時發生了「最高有效位進位」和符號位進位」,因為第二個運算元的符號位是1,但結果符號位是0,所以符號位有進位(1 + 0 + x = 10)。而第一個運算元的符號位又是0,所以必然是最高有效位產生了一位進位才讓符號位獲得了一個1才能進位,對於符號位的計算來說[正]符號位0 + [負]符號位1 + 最高有效位進位x = 10,x必然是1
[負]+[負]溢位,因為兩個都是負整數,所以符號位都是1,溢位時符號位發生了進位(兩個都是1)。再看最高有效位是否有進位,對於8位的負數加法來說,產生溢位,意味著結果範圍在-129~-256之間,這個範圍內的二進位制數,以9位補碼來看,就是1 0111 1111到1 0000 0000,那麼這兩個數如果減掉符號位相加的1 0000 0000的話,得到的結果就是 0111 1111到0000 0000,這個範圍內的數字第8位都是0,所以從符號位的計算可以得知[負]符號位1 + [負]符號位1 + 最高有效位進位x = 10,最高有效位的進位值必然是0,所以最高有效位必然沒有發生進位。
參考資料
知乎
舉例說明ERP的基本疊加原理
erp是從自發腦電eeg中提取出來的,之所以可以這樣得到是由於erp有兩個特性 潛伏期恆定 波幅恆定。而eeg則是沒有規律 雜亂無章的。通過多次疊加,eeg的各種正波和負波會相互抵銷,而erp由於潛伏期和波幅恆定,則通過多次疊加,依然能夠基本保持原來的特性,也就能夠顯示出來了 erp的基本原理是什麼...
你父母給你取名字的寓意?詳細說明
我父母給我取名的寓意是讓我聰明機靈,也蘊含著他們對我的期望。 柒63249闌聞 沒有偶意,但是自己覺得自己的名字還挺好聽的,這也算是沾沾自喜。 獨身女王 我的父母給我取名字的意義是花了很大的力氣的,他們希望我像早晨的太陽一樣冉冉升起,所以他們給我起的名字的寓意特別的好。 曉淡 我的父母想讓我以後健健...
12864的工作原理是什麼?誰能詳細說明下
12864是屬於lcd 液晶顯示的,lcd是 liquid crystal display 的簡稱,lcd 的構造是在兩片平行的玻璃當中放置液態的晶體,兩片玻璃中間有許多垂直和水平的細小電線,透過通電與否來控制桿狀水晶分子改變方向,將光線折射出來產生畫面。12864就是利用這樣的原理實現字元與 的顯...