用Java计算float中的set位

时间:2011-06-10 15:30:01

标签: java floating-point bit-manipulation

这是一个采访问题:如何在Java中计算float中的set位?我想我不应该知道浮点的位表示来回答这个问题。我可以以某种方式将浮点数转换为字节数组吗?我可以使用Java序列化,但它看起来有点过分。

3 个答案:

答案 0 :(得分:5)

Float类有一个:

    public static int floatToIntBits(float value)

根据IEEE 754浮点“单一格式”位布局返回指定浮点值表示的方法。

因此,您可以使用此方法获取位,然后计算设置的位数。

http://download.oracle.com/javase/7/docs/api/

答案 1 :(得分:2)

您可以使用:

Integer.bitCount(Float.floatToIntBits(value))

说过这是一个非常糟糕的面试问题......似乎更多地依赖于了解Java API的细节,而你应该使用什么作为招聘的基础。您希望有人理解这些原则并知道如何在需要时查看详细信息,而不是仅仅记住API的人。

答案 2 :(得分:1)

除了Java API方法之外,你也可以使用various bit hacks hiding here,尽管它们转换到我不知道的Java世界(或者对于那些做过的人来说,它们是否已经存在)高效的调用API)。请参阅“计数位设置”部分。