0

私を助けてくれる人には次の欠点があります。この場合、負の10進数の2進数を入力するには、-20(11000001101000000000000000000000)と入力すると、次のエラーがスローされます。

スレッド"main"の例外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);
}
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 に答える