【发布时间】:2016-01-16 07:22:36
【问题描述】:
我正在尝试将 BigInteger 数转换为二进制数。我使用 while 循环来减少 BigInteger 直到它等于 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溢出了
标签: java math while-loop conditional biginteger