2013-03-03 201 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