2011-06-10 71 views
3

這是一個面試問題:如何在Java中設置浮點數的位數?我想我不應該知道float的位表示來回答這個問題。我可以以某種方式將浮點數轉換爲字節數組嗎?我可以使用Java序列化,但它看起來像矯枉過正。在Java中浮點數設置位

+1

您有超過十個問題沒有被您接受。 ;) – 2011-06-10 15:38:54

回答

5

Float類具有:返回根據IEEE 754浮點「單一格式」位佈局的指定的浮點值的表示

public static int floatToIntBits(float value) 

方法。

所以你可以用這個方法得到位,然後計算哪些被設置。

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

+0

一旦你有一個int表示,有很多方法來計數它們。他們中的許多人都在[這裏]描述(http://gurmeet.net/puzzles/fast-bit-counting-routines/)。 – 2011-06-10 15:36:35

2

您可以使用:

Integer.bitCount(Float.floatToIntBits(value)) 

已經說過,這是一個非常糟糕的面試問題......似乎更多地依賴於Java API是不是知道細節你應該使用什麼作爲招聘的基礎。你需要一個懂得原理的人,知道如何在需要時查看細節,而不是隻記住API的人。

1

除了Java API方法,還有various bit hacks hiding here也可以使用,儘管它們轉換到我不知道的Java世界有多好(或者對於那些做的,它們是否更有效,蜜蜂)。請參閱「計數位設置」部分。