我正在閱讀Charles Petzold的書「代碼」。他在文中解釋瞭如何使用以下模板的十進制數轉換成二進制轉換:將十進制數轉換爲二進制
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
÷128 ÷64 ÷32 ÷16 ÷8 ÷4 ÷2 ÷1
[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]
在這本書中,他對如何使用該模板的解釋如下:
「把整個十進制數(小於或等於255)在 左上角的方框中,將第一個除數(128)除以該數字(被除數),如 所示。將商放在下方的方框中(左下方的方框(右上角的第二個框),第一個餘數是下一次計算的分紅,其中使用64的除數。繼續以相同的方式通過模板。
請記住,每個商都可以是0或1.如果紅利小於除數,則商數爲0,餘數僅爲股息。如果股息大於或等於除數,則商數爲1,餘數爲除數 - 除數。下面是它是如何用150做!」
[150] [22] [22] [22] [6 ] [6 ] [2 ] [0 ]
÷128 ÷64 ÷32 ÷16 ÷8 ÷4 ÷2 ÷1
[1 ] [0 ] [0 ] [1 ] [0 ] [1 ] [1 ] [0 ]
但我很困惑。當我這樣做的指示的計算,我得到不同的結果我在做什麼如下:
150÷128 = 1.171875(我沒有看到22從哪裏來的?)因此,我在150下面的框中放置1,然後攜帶並將其用作下一個的分紅計算,這當然會讓我陷入各種各樣的問題,最終,不是二進制數10010110!
有人能告訴我我要去哪裏嗎?
這是整數除法:'a = qd + r':'0 <= r
2009-10-19 21:28:33