8

如何获得 adouble或 a的单个位(或整个变量) float

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

我希望String等于:
"00111111000000000000000000000000"

或十六进制:
"F000000"

4

4 回答 4

13
long bits = Double.doubleToLongBits(myDouble);
System.out.println(Long.toBinaryString(bits));
于 2012-05-17T21:31:37.107 回答
4

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

请注意,如果 HSB 打开,则可能会出现问题 - 您可能需要转换为 long 以避免“溢出”。

于 2012-05-17T21:30:35.803 回答
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");
    }
}
于 2015-01-15T14:23:10.233 回答
-2

Double.byteValue()可能会帮助你。

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

于 2012-05-17T21:27:30.203 回答