【问题标题】:Count set bits in float in Java在Java中计算float中的设置位
【发布时间】:2011-06-10 15:30:00
【问题描述】:

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

【问题讨论】:

  • 您有十多个问题没有接受。 ;)

标签: java floating-point bit-manipulation


【解决方案1】:

Float 类有一个:

    public static int floatToIntBits(float value)

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

所以你可以用这个方法得到位,然后计算设置了哪些位。

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

【讨论】:

  • 一旦你有了一个 int 表示,就有很多方法可以计算它们。其中许多被描述为here
【解决方案2】:

你可以使用:

Integer.bitCount(Float.floatToIntBits(value))

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

【讨论】:

    【解决方案3】:

    除了 Java API 方法之外,您还可以使用 various bit hacks hiding here,尽管我不知道它们在 Java 世界中的转化效果如何(或者对于那些这样做的人,它们是否更有效调用 API)。请参阅“计数位设置”部分。

    【讨论】:

      猜你喜欢
      • 2011-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-10
      • 1970-01-01
      • 2013-03-27
      • 1970-01-01
      相关资源
      最近更新 更多