将float转换为位

时间:2012-05-17 21:24:50

标签: java floating-point double

如何获得doublefloat的单个位(或整个变量)?

例如,如果我有     float a = 0.5;

我希望String等于:
"00111111000000000000000000000000"

或以十六进制表示:
"F000000"

4 个答案:

答案 0 :(得分:12)

long bits = Double.doubleToLongBits(myDouble);
System.out.println(Long.toBinaryString(bits));

答案 1 :(得分:3)

看看Float.floatToIntBits() or Float.floatToRawIntBits()。这会让你得到一个int作为一个位。如果您需要它作为字符串,Integer.toBinaryString()

请注意,如果HSB处于打开状态可能会出现问题 - 您可能需要转换为长按以避免“溢出”。

答案 2 :(得分:1)

Double.byteValue()可能会对您有所帮助。

还有一个32位的等效Float.byteValue()

答案 3 :(得分:0)

public void printFloatBits(float f) {
    int bits = Float.floatToIntBits(f);
    // Extract each bit from 'bits' and compare it by '0'
    for (int i=31; i>=0; --i) {
        // int mask = 1 << i;
        // int oneBit = bits & mask;
        // oneBit == 0 or 1?
        System.out.print((bits & (1 << i)) == 0 ? "0" : "1");
    }
}