English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

-1842 要怎樣用二進位表示??
可以交我一下嗎??

2005-09-30 09:05:48 · 6 個解答 · 發問者 Anonymous in 科學 數學

6 個解答

你指的這個問題,其實應該是在電腦上才的遇到 ~
因為二進位,最常用的就是在只有 0 跟 1 的計算機上。
平常我們人與人溝通,不會沒事就用二進位,或是十六進位的。
於是呢,你要先考慮,電腦是用幾位數來表示一個數值?
常見的有用 1Byte,2Bytes,4Bytes的。也就是 8bits, 16bits, 32bit。
我們現在只討論 16bits的情況,它只能表示出
0000 0000 0000 0000 ~ 1111 1111 1111 1111,一共是 2^16 = 65536 個數。
如果呢,我們只全部將它定義成非負整數,那它就能對應到
0 ~ 65535 這些整數。
如果,我們要對應到負數,那方法有下列三種,但每種方法,都是將最高一位數,拿來表示正負值所用,故只剩下 31個位元來表示數值。所以,最多只能對應到 - 32768 ~ 0 ~ 32767 這些整數。這三種對應都是把
0000 0000 0000 0000 ~ 0111 1111 1111 1111 對應到 0 ~ 32767。故我們只要看它怎麼處理負數的:
第一種方法,就是上一位提到的,把 1xxx xxxx xxxx xxxx 對應到
0xxx xxxx xxxx xxxx 所對應的值的負值。舉個例,就是
0000 0000 0000 1000 是十進位的 8。 1000 0000 0000 1000 對應的就是 -8。
這時候,1000 0000 0000 0000對應的也是 十進位的 0。故這種方法,只能表示出
- 32767 ~ 0 ~ 32767 這些整數。
第二種方法,就是先取補數,再取負值,
1000 0000 0000 1000 先取補數,就是 0111 1111 1111 0111,對應的是 32759,
所以,1000 0000 0000 1000 對應的就是 - 32759。
第三種方法,是先用第二種方法取出補數後,再加 1,再取負數,
1000 0000 0000 1000 先取補數,就是 0111 1111 1111 0111,加 1後,
變成 0111 1111 1111 1000 ,對應的是 32760。原數對應的就是 -32760。

這三種方法都是可以用的啦,取法的名稱也不一樣,你可以去查一下計算機概論的書。
只是呢,接下來有一個問題是,那遇到有正負數時,計算機怎麼去計算他們的和呢?
前兩種方法比較有點麻煩,我就不說了,只有第三種方法,它是可以直接相加的,不需做任何處理 (如果有進位到第 17位數,是會被捨去的,因為計算機只放16個 bits 來記錄)。
因此,如果以上例來說,當它遇到 -8 + 8時,計算機的計算如下:
1111 1111 1111 1000 + 0000 0000 0000 1000 = 1 0000 0000 0000 0000
當然,最前面的 1,是不被計算機所記錄的,於是答案就是 0了。
(你可以想像一下,前兩種方法,計算機再計算 a + b的時候,要先去考慮
a, b分別的正負值,然後再去用不同的方式來相加。因為,很明顯的,
a, b 兩數都是 正數時,跟 一正一負時,相加的方式就是不一樣的了。
只有第三種方法,不管 a, b的正負,都是直接相加)
因此呢,好像現在大多都是用第三種方法來取負值的表示法。
如果你要問的, -1842 怎麼用這種方法來記,那就是透過原來定義的反運算:
1842 = 0000 0111 0011 0010,減 1 得: 0000 0111 0011 0001,
再取補數 1111 1000 1100 1110,那這個就是 - 1842。
可是呢,還有一個簡單的計算,因為我剛有說過, -1842 + 1842 = 0
所以,你用 1 0000 0000 0000 0000 - 0000 0111 0011 0010,就可以得到
1111 1000 1100 1110。
==================================================================
最後要說的是,三種不同取負值的方法,會造成負值的表示法是不一樣的,
還有一個最重要的一點就是,你是用幾位數來表示一個數值的。
用 8bits 是表示不出 -1842的,而 16bits 跟 32bits 底下, -1842的寫法也不一樣的。
==================================================================
要補充的是,這些是以前看計算機概論而來的心得。更詳細的介紹,請自行
找一本相關書籍來參考~

2005-09-30 14:34:08 補充:
其實呢,你這一題,應該是放到電腦類別才是呢。
前兩位的回答,都是把十進位的觀念套到二進位去。
只是呢,請試想一下,為什麼會有二進位的產生,原因就是當某種情況底下,只有 0 跟 1 的數值來表示一位數時。那麼,請問用什麼來表示 "-" 負號這個符號呢?
會不得不用二進位制的,通常就是在電腦上。這時候用來表示 "+" 或 "-" 號,也只有 0 跟 1。因此,把最高一位元拿來表正負,剩下其它的位元才拿來表數值~

2005-10-03 13:33:10 補充:
謝謝樓上兩位的意見~
我想把這類歸到電腦類,是因為如果放到電腦類的話,會有較多該類較專門的人員來參與提供意見。
並不是為了說這是不屬於數學的問題。
很同意你說的,數學本來就是為了解決生活上各式各類問題而產生出來的。所以,像物理、化學、天文等各方面,哪裡見不到數學的存在呢?
希望你別太生氣,我只是說,這放到電腦類問題上,沒說這不是數學問題 ^^

2005-09-30 10:27:42 · answer #1 · answered by ? 3 · 0 0

提供企業全程刊登職缺及轉檔,免費客服解說教做,是人資部第一首選,找工作、找人才,提供24H必回覆、獨家工作、自傳急診室、履歷配對、面試教學、職涯測評、TOEIC線上模擬考工作快報、薪資查詢、職場英語…幫求職者快速http://www.jptpex2013.com.tw/

2015-04-23 18:44:10 · answer #2 · answered by Andrews 1 · 0 0

我同意小曄的回答,但是不同意他的意見。為什麼這一題,應該放到電腦類別呢?發問者明明是問「-1842 要怎樣用二進位表示」,並不是問「電腦怎麼表示-1842」。沒錯,電腦是用二進位,但那不表示二進位非和電腦扯上關係不可。言下之意似乎是說二進位是因為電腦而誕生的,那麼,三進位、七進位、十一進位又是因為生活中的什麼實際事物而誕生的呢?
二進位就是二進位呀!二進位跟十進位、三進位、五進位、n進位都只是進制的一種,進制不能只是數學問題嗎?我不認為進制必然是電腦領域的問題。

2005-10-02 16:53:20 · answer #3 · answered by ? 7 · 0 0

一般電腦中,對於有號整數的負整數以2的補數來表示,比如16位元的有號整數,共可表示2^16=65536個整數,先由0開始表示為0000,0000,0000,0000,接著1表示為0000,0000,0000,0001,以此類推直到32767表示為0111,1111,1111,1111,最高位元(稱作第15位元)保留給符號用,因此無法再往上數,所以16位元的有號正整數最大為32767。

再來看-1的表示:-1等於0減1,利用二進位減法0000,0000,0000,0000-0000,0000,0000,0001,不夠減,怎麼辦?向最高位元的下個位元(即第16位元)借1,減了之後成為1111,1111,1111,1111,表示-1。
-2等於0減2,利用二進位減法0000,0000,0000,0000-0000,0000,0000,0010,不夠減,向最高位元的下個位元(即第16位元)借1,減了之後成為1111,1111,1111,1110,表示-2。

以此類推直到-32768表示為1000,0000,000,0000,
可以發現:最高位元(稱作第15位元)是1時表示負數,最高位元(稱作第15位元)是0時表示正數。

當作兩個二進位數的加法時,如果一個為正,另一個為負,結果一定會在-32768與32767之間,若有進位到第16位元,則直接捨去即可,若有進位是負數向第16位元借的,現在只是還給它而已,所以捨去還給第16位元;例如-2加3:
1111,1111,1111,1110+0000,0000,0000,0011=1,0000,0000,0000,0001
將原先向第16位元借的1還它,也就是捨去第16位元的1,就是正確答案0000,0000,0000,0001。

當作兩個二進位數的加法時,如果兩個都為正,或兩個都為負,若結果在-32768與32767之間,同樣的,若有進位到第16位元,則直接捨去即可;例如-2加-3:
1111,1111,1111,1110+1111,1111,1111,1101=1,1111,1111,1111,1011
將原先向第16位元借的1還它,也就是捨去第16位元的1,就是正確答案1111,1111,1111,1011,即為-5。

當作兩個二進位數的加法時,如果兩個都為正,或兩個都為負,若結果不在
-32768與32767之間,表示有溢位發生,則結果無法以16位元表示這個有號整數,則必須做修正;這裡只說發生溢位的狀況是什麼現象;如果兩個都為正,例如32767+2=32769,不在-32768與32767之間,表示有溢位發生,以二進位表示這個加法:0111,1111,1111,1111+0000,0000,0000,0010=1000,0000,0000,0001,最高位元(第15位元)為1表示其為負數是-127,兩個正數相加變成負數發生了溢位,判斷的方法是:到第15位元的進位(此時有進位),與到第16位元的進位(此時沒有進位),兩者不同就是有溢位發生。
再舉兩個都為負數的例子,例如-32767+(-2)=-32769,不在-32768與32767之間,表示有溢位發生,以二進位表示這個加法:1000,0000,0000,0001+1111,1111,1111,1110=1,0111,1111,1111,1111,最高位元(第15位元)為0表示其為正數是127,兩個負數相加變成正數發生了溢位,判斷的方法是:到第15位元的進位(此時沒有進位),與到第16位元的進位(此時有進位),兩者不同就是有溢位發生。

2005/10/1, 7:00補充:
-1842為0減1842,1842的16位元二進位表示為0000,0111,0011,0010,要以2的補數表示-1842,就是:0000,0000,0000,0000-0000,0111,0011,0010,不夠減,向第16位元借1,也就是1,0000,0000,0000,0000-0000,0111,0011,0010,1,0000,0000,0000,0000-0000,0111,0011,0010=1111,1111,1111,1111-0000,0111,0011,0010+0000,0000,0000,0001,而1111,1111,1111,1111-0000,0111,0011,0010就是0000,0111,0011,0010的位元中的0轉變成1而1轉變成0,也就是0000,0111,0011,0010的1之補數,而1111,1111,1111,1111-0000,0111,0011,0010+0000,0000,0000,0001就是0000,0111,0011,0010的1之補數再加1,成為0000,0111,0011,0010的2之補數,換句話說:0000,0111,0011,0010的位元中的0轉變成1而1轉變成0,變成1111,1000,1100,1101再加1,變成1111,1000,1100,1110,就是-1842的16位元2之補數表示法,也就是16位元有號整數常用的負數表示法。

2005-09-30 19:41:28 · answer #4 · answered by ? 1 · 0 0

1842/2=921....0 <-----餘數為 2^0項係數
921/2=460....1 <-----餘數為 2^1項係數
460/2=230....0 <-----餘數為 2^2項係數
230/2=115....0 <-----餘數為 2^3項係數
115/2=57....1 <-----餘數為 2^4項係數
57/2=28....1 <-----餘數為 2^5項係數
28/2=14...0 <-----餘數為 2^6項係數
14/2=7....0 <-----餘數為 2^7項係數
7/2=3...1 <-----餘數為 2^8項係數
3/2=1....1 <-----餘數為 2^9項係數
商數小於2 此處商數為 2^10項係數
所以
1842=1*2^10+1*2^9+1*2^8+0*2^7+0*2^6+1*2^5+1*2^4+0*2^3+0*2^2+1*2^1+0*2^0
所以
1842 用二進位表示
1842=11100110010
加負號
-1842=-11100110010

check:
1*2^10+1*2^9+1*2^8+0*2^7+0*2^6+1*2^5+1*2^4+0*2^3+0*2^2+1*2^1+0*2^0
去算算看是否為1842
OK!

2005-09-30 15:12:41 補充:
同意小嘩的說法
請選3號
老師的作法請參考

2005-09-30 10:17:12 · answer #5 · answered by Anonymous · 0 0

進位的方法跟正數一樣,只是前面再加個負號而已。

2005-09-30 09:14:05 · answer #6 · answered by Anonymous · 0 0

fedest.com, questions and answers