JAVA:从64位fpn到十进制的转换
我在转换这段java代码时遇到问题…代码最初将32位fpn转换为十进制。我正在尝试将64位fpn转换为十进制。请帮忙 将32位FPN转换为十进制的原始代码JAVA:从64位fpn到十进制的转换,java,binary,ieee-754,Java,Binary,Ieee 754,我在转换这段java代码时遇到问题…代码最初将32位fpn转换为十进制。我正在尝试将64位fpn转换为十进制。请帮忙 将32位FPN转换为十进制的原始代码 如果您不确定我想做什么,请参考不确定为什么要费事手工完成,因为Java已经有了您想要的所有方法 看起来您的输入是一个字符串,表示二进制的基2 IEEE 754浮点数,32位或64位。巧合的是,这正是Java的float和double分别是什么。因此: public float binaryStringToFloat(final String
如果您不确定我想做什么,请参考不确定为什么要费事手工完成,因为Java已经有了您想要的所有方法 看起来您的输入是一个字符串,表示二进制的基2 IEEE 754浮点数,32位或64位。巧合的是,这正是Java的float和double分别是什么。因此:
public float binaryStringToFloat(final String input)
{
return Float.intBitsToFloat(Integer.parseInt(input, 2));
}
public double binaryStringToDouble(final String input)
{
return Double.longBitsToDouble(Long.parseLong(input, 2));
}
private void ConvertToDecimal(){
int pos = 1;
double doubleBin [] = new double [FPNRep.length()];
boolean bNegative = false;
double exp = 0.0;
double sig = 0.0;
for(int i = 0; i<=FPNRep.length() - 1; i++){
if (FPNRep.charAt(i) == '0'){
doubleBin[i] = 0;}
else{
doubleBin[i] = 1;}}
if (doubleBin[0] == 1){
bNegative = true;}
else{
bNegative = false;}
for (int i = 1; i <= 11; i++){
exp += (doubleBin[i] * Math.pow(2, 11 - i));}
exp = exp - 127;
for (int i = 12; i <= 63; i++){
if (doubleBin[i] == 1){
sig += (1 / Math.pow(2, pos));}
pos++;}
//Add the hidden bit.
sig = sig + 1;
if (bNegative == true){
number = -1 * sig * Math.pow(2, exp);}
else{
number = 1 * sig * Math.pow(2, exp);}
return;
}
public float binaryStringToFloat(final String input)
{
return Float.intBitsToFloat(Integer.parseInt(input, 2));
}
public double binaryStringToDouble(final String input)
{
return Double.longBitsToDouble(Long.parseLong(input, 2));
}