如何获得 adouble
或 a的单个位(或整个变量) float
?
例如,如果我有 float a = 0.5;
我希望String
等于:
"00111111000000000000000000000000"
或十六进制:
"F000000"
如何获得 adouble
或 a的单个位(或整个变量) float
?
例如,如果我有 float a = 0.5;
我希望String
等于:
"00111111000000000000000000000000"
或十六进制:
"F000000"
long bits = Double.doubleToLongBits(myDouble);
System.out.println(Long.toBinaryString(bits));
看 Float.floatToIntBits() or Float.floatToRawIntBits()
。这会让你得到一个 int 的位。如果您需要它作为字符串,Integer.toBinaryString()
.
请注意,如果 HSB 打开,则可能会出现问题 - 您可能需要转换为 long 以避免“溢出”。
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");
}
}
Double.byteValue()
可能会帮助你。
还有一个等效的 32 位Float.byteValue()
.