看板 Math 關於我們 聯絡資訊
※ 引述《wa007123456 (大笨羊)》之銘言: : 大家好 : 小弟想請問各位有關二進位的事情 : 像是把0.375轉換成二進位 : 就變成0.011 : 但是我是用土法煉鋼的方式 : 就是把0.375*2 取整數 去整數 : 然後再乘一次2 直到0.0為止(不是所有的小數都可完美轉成二進制) : 可是像是比較多位的小數 (ex:0.84375) : 這樣做會浪費很多時間 : 想請問各位有沒有更好的辦法 : 感謝 要另外的方法是有, 只不過應該沒有比較快... 以你舉的 0.84375 為例 0.84375 >= 0.5 => 1, 相減得 0.34375 0.34375 >= 0.25 => 1, 相減得 0.09375 0.09375 < 0.125 => 0 0.09375 >= 0.0625 => 1, 相減得 0.03125 0.03125 >= 0.03125 => 1, 相減得 0, 到此為止 由上到下讀得轉換結果為 0.11011 中間的數字是從 1 一直折半下來的結果 也就是二進位小數第 N 位為 1 對應的十進位值 跟用乘 2 法比較: 0.84375 * 2 = 1.6875 => 1 0.6875 * 2 = 1.375 => 1 0.375 * 2 = 0.75 => 0 0.75 * 2 = 1.5 => 1 0.5 * 2 = 1 => 1, 到此為止 由上到下一樣可以讀得轉換結果為 0.11011 其實如果你是在準備考試的話 出的題目要你算個二進位小數五六位就夠多了 再說如你所說也不是隨便出個數字就能轉的完 會出成題目就是設計過的 如果還是想要有個大略概念會算多少的話 從上法的中間那一串數字可以發現 二進位小數第 N 位的十進位也會到小數第 N 位 (這其實是因為 10 有恰好一個因數 2 的關係) 所以看題目裡的小數有幾位就知道要乘 2 乘幾次了 (如果轉得完的話) -- LPH [acronym] = Let Program Heal us -- New Uncyclopedian Dictionary, Minmei Publishing Co. -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.30.32 ※ 文章網址: http://www.ptt.cc/bbs/Math/M.1414505675.A.423.html ※ 編輯: LPH66 (140.112.30.32), 10/28/2014 22:15:13 ※ 編輯: LPH66 (140.112.30.32), 10/28/2014 22:15:25
wa007123456 : 太感謝了:D 10/28 23:03