我想將BigInteger數字轉換爲二進制數。我使用一個while循環來減少BigInteger,直到它等於1,並將餘數作爲循環運行。BigInteger.intValue()> 1給出不正確的布爾值
循環的條件是:(decimalNum.intValue()> 1)。
但是程序只經過一次循環,然後認爲BigInteger小於/等於1,而實際上它大約是55193474935748. 爲什麼會發生這種情況?
(「inBinary」是一個ArrayList從環舉行的餘)
這裏是while循環:
while (decimalNum.intValue()>1){
inBinary.add(0, decimalNum.mod(new BigInteger("2")).intValue()); //Get remainder (0 or 1)
decimalNum = decimalNum.divide(new BigInteger("2")); //Reduce decimalNum
}
因爲你不能代表所有'BigInteger'值'int',如'int'只上升到2B。我猜'intValue'溢出 –