• 2

關於演算法

不好意思 各位大大
小弟不知該發在哪板

小弟最近在學演算法
想請問板上懂的人

1200的12位元二進位是10010110000
我想請問正的1's補數是否需要0轉1跟1轉0??
因為我不確定下列對不對
正的1補數10010110000
2補數+1=10010110001

1200的1補數是需要0變1跟1變0
所以是01101001111=>101101001111
2的補數+1=01101010000=>101101010000

有誰能開導我一下= =
因為我朋友跟我說
不管正負都需要0=>1 1=>0
這樣不是正負的補數都變成一樣了嗎.......

拍洩更正完畢了
2010-04-16 16:39 發佈
文章關鍵字 演算法
你有打錯嗎?

怎麼一會1200

一下子又 負1230
??
這是應該計概吧, 怎麼會是演算法?
基拉 wrote:

不好意思 各位大大
小弟不知該發在哪板

小弟最近在研究演算法
想請問板上懂的人

1200的12位元二進位是10010110000
我想請問正的1's補數是否需要0轉1跟1轉0??
因為我知道
1230的1補數是需要0變1跟1變0
所以是01101001111=>101101001111
2的補數+1=01101010000=>101101010000

有誰能開導我一下= =

您需要知道的事是 ... 為何需要補數

需要『用加的方法』來計算減法時
才需要補數

所以『用加的方法』來計算加法時

不需要補數

所以正號 ( + ) 沒有補數
行至水窮處,與人云亦云。〔薪水是零元,還活得下去〕。
strawinsky wrote:
這是應該計概吧, 怎...(恕刪)

+1

我被騙進來了
大大
那請問
1200正的1補數10010110000
2補數+1=10010110001

這樣對嗎??
還有正負
最左邊需要都多加0或1變成12個數字
還是11個就可以了??
基拉 wrote:
那請問
1200正的1補數10010110000
2補數+1=10010110001
這樣對嗎??
還有正負
最左邊需要都多加0或1變成12個數字
還是11個就可以了??


十進位的 1200 轉成二進位 = 100 1011 0000
要表示正負數,前面要多一個 sign bit = 0100 1011 0000
不管 1's 或 2's 表示法,關於正數的結果都一樣

至於負數 (-1200)的話
1's 直接反相 = 1011 0100 1111
2's = 1's + 1 = 1011 0101 0000

很久沒用到,希望沒記錯。
秋水寒 wrote:
十進位的 1200 ...(恕刪)

所以正數的補數不需要+1囉??
因為他的二進位就是2的補數
1的補數還需要-1?
基拉 wrote:
所以正數的補數不需要+1囉??
因為他的二進位就是2的補數
1的補數還需要-1?


補數的 MSB 那一位一定是 sign-bit,用來表示正(0)負(1)。
後面的 bits 才是用來表示數值。

對於正數來說,1's 跟 2's 的表示方式一樣。

對於負數來說,1's 的表示法是其絕對值的 invert,也就是反相。
2's 的表示法是 1's +1。

可以看我上列的例子。

另外,這不叫「演算法」,這是二進位的一種表示方式。
好處是所有的減法可以直接用加法解決。
在二進位的世界中,只有加法器,沒有減法器,就是這個原因。

一般的計算機概論或數位邏輯導論應該都有關於補數的說明才對。
秋水寒 wrote:
補數的 MSB 那一...(恕刪)


原來這是計算機概論的阿
因為我最近去旁聽演算法
他裡面有提到這些

拍洩
大大感謝你
我終於弄懂了
  • 2
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?