Java: Как преобразовать строку двоичных значений в число с плавающей запятой и наоборот? - PullRequest
5 голосов
/ 01 марта 2011

Как преобразовать значение с плавающей точкой 12345.12346f в строку двоичных значений, т. Е. «0011010101010101», и наоборот?

Ответы [ 4 ]

14 голосов
/ 01 марта 2011

Я не уверен, что это то, что вам нужно, но вот решение, позволяющее получить двоичное представление разметки битов двойного формата IEEE 754 с плавающей запятой для числа с плавающей запятой (в основном это представление памяти с плавающей запятой):

int intBits = Float.floatToIntBits(yourFloat); 
String binary = Integer.toBinaryString(intBits);

Для обратной процедуры:

int intBits = Integer.parseInt(myString, 2);
float myFloat = Float.intBitsToFloat(intBits);
3 голосов
/ 21 июня 2014

Для чисел с плавающей запятой используйте Long или BigInteger для разбора строки.Преобразование в int приводит к тому, что сначала цифра из 32 битов интерпретируется как знак.процедура:

int intBits = Float.floatToIntBits(yourFloat); 
String binary = Integer.toBinaryString(intBits);

обратная процедура:

int intBits = new BigInteger(myString, 2).intValue();
// int intBits = (int) Long.parseLong(myString, 2);
float myFloat = Float.intBitsToFloat(intBits);
3 голосов
/ 01 марта 2011

Рабочий образец:

class F { 
  public static void main( String ... args ) { 
    System.out.println(
          Integer.toBinaryString( 
             Float.floatToIntBits(12345.12346f)
          ) 
     );
  }
}

Выход:

1000110010000001110010001111110
0 голосов
/ 01 марта 2011

Вы можете получить битовое представление значения Java Float, используя

Float.floatToIntBits(float f);

После того, как вы это сделаете, вы можете по очереди проверить каждый бит результирующего целого, начиная с самого высокого, и выяснить,он установлен, записывая «1», если он установлен, и «0», если нет.

...