十進位制轉二進位制時,小數部分「乘2取整法」的原理是什麼?

時間 2021-07-13 21:04:06

1樓:SuperRun

0.75 = 1/2 + 1/4 + 0/8 + 0/16 + ... ;

你左右都乘2 , 變成了1.5 = 1 + 1/2 + 0/4 + 0/8 + ...;

會發現二分位(即二進位制小數第一位)變成了整數, 四分位變成了二分位, 也就是整體往前進了一位.

而這個進到整數字的"1"就是之前的二分位. 再乘2, 最一開始的四分位就會從二分位進到整數字.

二分位的含義可以參考"十分位", "百分位", "千分位"

2樓:魔某人

0.353表示乙個數里有3個(1/10),5個(1/100),3個(1/1000)。

0.11001表示乙個數里有1個(1/2),1個(1/4),1個(1/32)。

0.353裡有多少個(1/2)?

floor(0.353/0.5)=0個。

0.353裡有多少個(1/4)?

floor(0.353/0.25)=1個。

0.353除了剛才那1個(1/4),還有多少(1/8)?

floor((0.353-0.25)/0.125)=0個。

0.353除了剛才那1個(1/4),還有多少(1/16)?

floor((0.353-0.25)/0.0625)=1個。

於是0.353=0.0101...

乘2取整法的原理就是這樣,只是他換了一種說法:

floor(0.353/0.5) = floor(0.353*2)

floor(0.353/0.25) = floor(0.353*2*2)

floor((0.353-0.25)/0.125)

= floor((0.353*2*2-0.25*2*2)/(0.125*2*2))

= floor((0.353*2*2-1)/0.5)

= floor((0.353*2*2-1)*2)

為什麼十進位制可以表示所有小數,二進位制三進製不能?

這個問題是錯的。無論是十進位制還是二進位制三進製,都沒法表示所有小數 題主指的應該是有理小數 其實,二進位制 三進製的階數太小,迴圈節變得比較長而已,有限的位數不容易表示出來而已。 Wolfie Wang 先問是不是,再問為什麼。如果只談有限小數,那麼十進位制和其他進製都有不能精確表示的數。如果把無...

怎麼理解十進位制轉二進位制輾轉相除演算法?

225 1 2 1 2 1 2 0 2 0 2 0 2 0 2 1 2對吧。225 2的餘數不就是2前面的1嗎?112 2的餘數不就是2前面的0嗎?56 2的餘數不就是2前面的0嗎?28 2的餘數不就是2前面的0嗎?14 2的餘數不就是2前面的0嗎?7 2的餘數不就是2前面的1嗎?3 2的餘數不就是...

二進位制 八進位制 十進位制 十六進製制 怎麼學會?是怎麼算的方式?

訬禕 這個是前段時間發現的很有意思的進製轉換 看整數部分運算,本來十進位制轉二進位制整數轉換規則 除以基數二 取餘,最後商為0 但我發現這個解題過程,商數為1,結束轉換這種類似的錯誤普遍存在,但好在通過反向求和可以驗算轉換是否存在錯誤,我個人覺得驗算還是可以讓自己少一些錯誤。 我也是現在才真正想清楚...