2012-08-15 97 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