/*整數和小數分別轉換. 整數除以2,商繼續除以2,得到0為止,將餘數逆序排列.
22 / 2 11 餘 0
11 / 2 5 餘 1
5 / 2 2 餘 1
2 / 2 1 餘 0
1 / 2 0 餘 1
所以22的二進位制是10110 小數乘以2,取整,小數部分繼續乘以2,取整,得到小數部分0為止,將整數順序排列.
0.8125x2=1.625 取整1,小數部分是0.625
0.625x2=1.25 取整1,小數部分是0.25
0.25x2=0.5 取整0,小數部分是0.5
0.5x2=1.0 取整1,小數部分是0,結束
所以0.8125的二進位制是0.1101 十進位制22.8125等於二進位制10110.1101*/
public class demo1 catch (exception e)
}public static string decimal2binary(double value) throws exception
stringbuilder.reverse();
// 將小數部分轉化為二進位制
int count = 32; // 限制小數部分位數最多為32位,如果超過32為則丟擲異常
double num = 0;
while (r > 0.0000000001)
num = r * 2;
if (num >= 1) else
}return stringbuilder.tostring();}}
/*輸出
the integer is: 22
the decimal number is: 0.8125
the result is: 10110.1101*/
十進位制小數轉為二進位制
十進位制數轉換為二進位制的大家都清楚了,那麼帶小數的十進位制如何轉換為二進位制?整數部分當然和十進位制整數轉換方式一樣,也就是說小數部分如何轉化為二進位制?方法 乘2取整法,即將小數部分乘以2,然後取整數部分,剩下的小數部分繼續乘以2,然後取整數部分,剩下的小數部分又乘以2,一直取到小數部分為零為止...
十進位制小數轉化為二進位制小數
轉了這篇文章,完全是群裡討論計算機無法精確表示小數才想找一下原因的。究其原因就是十進位制小數無法用2進製表示 0.5什麼的可以表示 大學也學過,不過已經忘了。一 二進位制數轉換成十進位制數 由二進位制數轉換成十進位制數的基本做法是,把二進位制數首先寫成加權係數展開式,然後按十進位制加法規則求和。這種...
十進位制小數轉化為二進位制小數
一 二進位制數轉換成十進位制數 由二進位制數轉換成十進位制數的基本做法是,把二進位制數首先寫成加權係數展開式,然後按十進位制加法規則求和。這種做法稱為 按權相加 法。例1105把二進位制數110.11轉換成十進位制數。二 十進位制數轉換為二進位制數 十進位制數轉換為二進位制數時,由於整數和小數的轉換...