我正在寫一個函數來將int數轉換爲它們的int數字二進制數,按照下面的解釋: 假設我們希望將十進制數57轉換爲二進制數。我們首先從右至左編寫位置 的值,直到我們到達位置值大於 的列小於十進制數。我們不需要那個專欄,所以我們放棄它。因此,我們首先 寫:Java中的十進制到二進制函數
位置值:64 32 16 8 4 2 1
然後我們丟棄位置值64列,留下:
位置值:32 16 8 4 2 1
接下來我們從最左邊的一列到右邊。我們將32分成57和 觀察到57中有32個餘數爲25,所以我們在32列中寫1。 我們將16分爲25,並觀察到25中有16個餘數爲9,並在16列中寫入 1。我們將8分成9,並觀察9中有8個,其餘爲1。當接下來的兩列各自的位置 的值被分成1時,每個列產生0的商,所以我們在4和2列中寫入0。最後,1到1是1,所以我們在1列中寫1。這產生了:
位置值:32 16 8 4 2 1 符號值:1 1 1 0 0 1
我寫試圖按照說明的腳步的功能。當dec = 10且c2 = 4時,不應該繼續while循環,因爲10 < = 4是錯誤的,但條件爲真。有人可以解釋發生了什麼嗎?
public static int decimaltobinary(int dec){}{
int bin = 0,it;
int c1,c2;
while(dec>0){
it = 1;
do{
c2 = (int)Math.pow(2, it +1);
c1 = (int)Math.pow(2, it);
}while(dec <= c2 && dec < c1);
bin += Math.pow(10, it - 1);
dec = dec % c1;
}
return bin;
}
「它」永遠不會增加。 – Ypnypn 2014-09-29 21:27:41