十進位制小數轉為二進位制小數

2021-08-11 05:48:07 字數 936 閱讀 1305

/*整數和小數分別轉換. 整數除以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轉換成十進位制數。二 十進位制數轉換為二進位制數 十進位制數轉換為二進位制數時,由於整數和小數的轉換...