这是一个采访问题:如何在Java中计算float中的set位?我想我不应该知道浮点的位表示来回答这个问题。我可以以某种方式将浮点数转换为字节数组吗?我可以使用Java序列化,但它看起来有点过分。
答案 0 :(得分:5)
Float类有一个:
public static int floatToIntBits(float value)
根据IEEE 754浮点“单一格式”位布局返回指定浮点值表示的方法。
因此,您可以使用此方法获取位,然后计算设置的位数。
答案 1 :(得分:2)
您可以使用:
Integer.bitCount(Float.floatToIntBits(value))
说过这是一个非常糟糕的面试问题......似乎更多地依赖于了解Java API的细节,而不你应该使用什么作为招聘的基础。您希望有人理解这些原则并知道如何在需要时查看详细信息,而不是仅仅记住API的人。
答案 2 :(得分:1)
除了Java API方法之外,你也可以使用various bit hacks hiding here,尽管它们转换到我不知道的Java世界(或者对于那些做过的人来说,它们是否已经存在)高效的调用API)。请参阅“计数位设置”部分。