【发布时间】:2011-06-10 15:30:00
【问题描述】:
这是一个面试问题:如何在 Java 中计算浮点数中的设置位?我想我不应该知道 float 的位表示来回答这个问题。我可以以某种方式将浮点数转换为字节数组吗?我可以使用 Java 序列化,但它看起来有点矫枉过正。
【问题讨论】:
-
您有十多个问题没有接受。 ;)
标签: java floating-point bit-manipulation
这是一个面试问题:如何在 Java 中计算浮点数中的设置位?我想我不应该知道 float 的位表示来回答这个问题。我可以以某种方式将浮点数转换为字节数组吗?我可以使用 Java 序列化,但它看起来有点矫枉过正。
【问题讨论】:
标签: java floating-point bit-manipulation
Float 类有一个:
public static int floatToIntBits(float value)
根据 IEEE 754 浮点“单一格式”位布局返回指定浮点值表示的方法。
所以你可以用这个方法得到位,然后计算设置了哪些位。
【讨论】:
你可以使用:
Integer.bitCount(Float.floatToIntBits(value))
虽然说这是一个非常糟糕的面试问题......似乎更多地依赖于了解 Java API 的细节,这不是你应该使用什么作为招聘的基础。您需要了解原理并知道如何在需要时查看详细信息的人,而不是只记住 API 的人。
【讨论】:
除了 Java API 方法之外,您还可以使用 various bit hacks hiding here,尽管我不知道它们在 Java 世界中的转化效果如何(或者对于那些这样做的人,它们是否更有效调用 API)。请参阅“计数位设置”部分。
【讨论】: