0

可以帮助我的人我有以下缺点,在这种情况下输入负十进制二进制输入 -20 (11000001101000000000000000000000) 会引发以下错误:

线程“主”java.lang.NumberFormatException 中的异常:对于输入字符串:“110000011010000000000000000000000”

# 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);
}
4

1 回答 1

1

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

...字符串中的字符必须都是指定基数的数字(由 Character.digit(char, int) 是否返回非负值来确定)...

不幸的是,您想解析负值。您可以尝试Long.parseLong改用并强制long转换为int

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

这样,您将获得具有相同字节表示的 int

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

输出:

>11000001101000000000000000000000
于 2013-03-03T04:19:01.197 回答