簡體   English   中英

為什么對於很長的二進制字符串返回負值?

[英]Why is it returning a negative value for a very long binary string?

public long bin_to_dec() {
    int leng = a.length();

    for (int i = 0, j = (leng - 1); i < leng; i++, j--) {

        int number = Character.getNumericValue(a.charAt(j));
        result = result + (number * ((long) Math.pow(2, i)));

    }
    return result;
}  

此代碼將二進制字符串作為參數,並返回其十進制值。
但對於一個長字符串,即

(111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111) 

它返回-28。
為什么內存超出范圍? 還是我的代碼不正確?

您可能超出了int的長度。 Java中的整數是32位,而二進制字符串是91位。

嘗試改用BigInteger東西,它不會溢出。 實際上, BigInteger為此提供了一個內置方法:

BigInteger result = new BigInteger(a, 2);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM