将32位二进制数转换为十进制
编程 65
可以帮助我的人,我有以下缺点,
在这种情况下输入负十进制二进制数时,输入-20(11000001101000000000000000000000)会引发以下错误:
线程“主”中的异常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);
}
-
从Integer.#parseInt(java.lang.String, int):
...字符串中的所有字符都必须是指定基数的数字(由Character.digit(char,int)是否返回非负值来确定)...
不幸的是,您想解析负值。您可以尝试使用Long.parseLong
代替,并将返回的long
强制转换为int
int bits = (int) Long.parseLong("11000001101000000000000000000000", 2);
这样,您将获得具有相同字节表示形式的intSystem.out.println(">"+Integer.toBinaryString(bits));
输出:>11000001101000000000000000000000
2025-04-13 15:07:05