2012-08-15 91 views
-4

我想寫一個代碼來計算java中任何給定整數的二進制間隔。計算二進制間隙

+1

我使用谷歌的想法。 – gkuzmin 2012-08-15 07:32:45

+0

我假設你想要一個* integer *而不是任何* number *。另外 - 你是否只考慮適合原始'int'的整數? – amit 2012-08-15 07:32:48

+2

什麼是二元缺口? – Blender 2012-08-15 07:33:25

回答

0

與給人一種回答這個問題的問題是

  • 你不會學到任何東西
  • 不能使用家庭作業的答案,如果你不能解釋你做了什麼。

long l = 0b100101L; 
String betweenOnes = Long.toBinaryString(l >> Long.numberOfTrailingZeros(l)) 
int zeros = Collections.max(Arrays.asList(betweenOnes).split("1+"))).length(); 
System.out.println(zeros); 

打印

2 
+0

我知道這是舊的,但上面的答案不僅緩慢(字符串操作),它也是錯誤的。這將爲0b1001000L打印3。 – user1515791 2016-03-07 10:46:48

+0

@ user1515791你如何確定數字是0x1001000L而不是0x01001000L? – 2016-03-07 14:39:23

+1

我不完全確定你的意思,也許我錯過了一些東西,但是你的解決方案返回3爲328,應該是2(101001000)。二進制差距應以1 – user1515791 2016-03-07 17:26:36