2013-03-03 240 views
0

誰可以幫助我,我有以下缺點, 在這種情況下,進入一個負的十進制二進制輸入-20(11000001101000000000000000000000)拋出我下面的錯誤:在線程轉換32位二進制數轉換爲十進制

異常「主」 java.lang.NumberFormatException:對於輸入字符串: 「11000001101000000000000000000000」

# Include <stdio.h> 
# include <stdlib.h> 

public static void main(String[] args) {  
    int bits = Integer.parseInt("1000001101000000000000… 2);   
    float f1 = Float.intBitsToFloat(bits); 
    int Sign = ((bits >> 31) == 0) ? 1 : -1; 
    int Exponent = ((bits >> 23) & 0xff); 
    int Mantissa = (Exponent== 0) 
    ? (bits & 0x7fffff) << 1 
    : (bits & 0x7fffff) | 0x800000; 
    System.out.println("Sign: " + Sign + " Exponent: " + Exponent + "Mantissa:" + Mantissa); 
    System.out.println(f1); 
} 
+1

請用英文改寫。 – 2013-03-03 03:04:45

+0

+1。謝謝@David翻譯 – qdii 2013-03-03 03:30:18

回答

1

Integer.#parseInt(java.lang.String, int)

...The characters in the string must all be digits of the specified radix (as determined by whether Character.digit(char, int) returns a nonnegative value)...

不幸的是,你想解析負值。你可以嘗試使用Long.parseLong,而不是和投回到longint

int bits = (int) Long.parseLong("11000001101000000000000000000000", 2); 

這樣你會得到你的INT具有相同的字節表示

System.out.println(">"+Integer.toBinaryString(bits)); 

輸出:

>11000001101000000000000000000000 
+0

謝謝謝謝我的工作花了15天的時間尋找他的笑話,但沒有。格拉西亞斯米爾格拉西亞我funciono llevo 15 dias buscandole el chistes pero納達 – David 2013-03-03 04:23:38

+0

@大衛很高興我可以幫助你:) – Pshemo 2013-03-03 04:43:12