如何将负双精度转换为二进制表示?
How to convert negative double to binary representation?
我尝试了该站点的很多提示,但无法将负浮点数或双精度数正确转换为其二进制表示形式。有些数字工作正常,但如果我想转换 -11.1,我得到错误的位表示。
我的代码:
public static String fromFloatTo64Binary(String input) {
input = input.replaceAll(",", ".");
double number = Double.parseDouble(input);
long longBits = Double.doubleToLongBits(number);
String result = Long.toBinaryString(longBits);
// check if input is signed
if (input.substring(0, 1).equalsIgnoreCase("-")) {
result = 1 + result;
} else {
result = 0 + result;
}
return result;
}
输入:11.1
输出:0 1000000 00100110 00110011 00110011 00110011 00110011 00110011 00110011
输入:-11.1
输出:1 1100000 00010011 00011001 10011001 10011001 10011001 10011001 10011001
再次将这些位转换为十进制:-6.402228286547589E154
以下似乎有效:
input = input.replaceAll(",", ".");
double number = Double.parseDouble(input);
long longBits = Double.doubleToLongBits(number);
String result = Long.toBinaryString(longBits);
StringBuilder builder = new StringBuilder();
for (int i = result.length(); i < 64; i++) {
builder.append('0');
}
return builder.append(result).toString();
(IDEOne 结果在 https://ideone.com/winQFa)
Louis Wasserman 表达得非常好,但在这里我也给出了一个简单的代码来解决这个问题:-
System.out.println(Long.toBinaryString(Double.doubleToRawLongBits(-11.1)));
这里也对这个问题进行了深入的讨论How to convert negative double value to binary value in java?
希望对您有所帮助。祝你有美好的一天!
我尝试了该站点的很多提示,但无法将负浮点数或双精度数正确转换为其二进制表示形式。有些数字工作正常,但如果我想转换 -11.1,我得到错误的位表示。
我的代码:
public static String fromFloatTo64Binary(String input) {
input = input.replaceAll(",", ".");
double number = Double.parseDouble(input);
long longBits = Double.doubleToLongBits(number);
String result = Long.toBinaryString(longBits);
// check if input is signed
if (input.substring(0, 1).equalsIgnoreCase("-")) {
result = 1 + result;
} else {
result = 0 + result;
}
return result;
}
输入:11.1
输出:0 1000000 00100110 00110011 00110011 00110011 00110011 00110011 00110011
输入:-11.1
输出:1 1100000 00010011 00011001 10011001 10011001 10011001 10011001 10011001
再次将这些位转换为十进制:-6.402228286547589E154
以下似乎有效:
input = input.replaceAll(",", ".");
double number = Double.parseDouble(input);
long longBits = Double.doubleToLongBits(number);
String result = Long.toBinaryString(longBits);
StringBuilder builder = new StringBuilder();
for (int i = result.length(); i < 64; i++) {
builder.append('0');
}
return builder.append(result).toString();
(IDEOne 结果在 https://ideone.com/winQFa)
Louis Wasserman 表达得非常好,但在这里我也给出了一个简单的代码来解决这个问题:-
System.out.println(Long.toBinaryString(Double.doubleToRawLongBits(-11.1)));
这里也对这个问题进行了深入的讨论How to convert negative double value to binary value in java?
希望对您有所帮助。祝你有美好的一天!