【问题标题】:count the binary gap [closed]计算二进制间隙[关闭]
【发布时间】:2012-08-15 07:30:05
【问题描述】:

我想编写一个代码来计算java中任何给定整数的二进制间隙。

【问题讨论】:

  • 我假设你想要一个 integer 而不是任何 number。另外 - 您是否只考虑适合原始 int 的整数?
  • 是的,那是整数!
  • 简单字中的二进制间隙是被 1 包围的零的数量,例如 1001 有 2 个二进制间隙。
  • 100101 的二进制间隙是多少?
  • “有什么想法吗?” - 我的想法是你应该尝试自己编写代码,如果遇到困难可以提出问题。

标签: java binary


【解决方案1】:

回答这个问题的问题是

  • 你不会学到任何东西
  • 如果你不能解释你做了什么,你就不能用答案来做作业。

.

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

【讨论】:

  • 我知道这很旧,但上面的答案不仅慢(对字符串的操作),而且也是错误的。这将为 0b1001000L 打印 3。
  • @user1515791 你怎么确定数字是0x1001000L而不是0x01001000L?
  • 我不完全确定你的意思,也许我遗漏了一些东西,但你的解决方案返回 3 表示 328,应该是 2 (101001000)。二进制间隙应以 1 开头和结尾
  • @user1515791 我明白你在说什么,我写这篇文章已经有一段时间了。
猜你喜欢
  • 2018-01-21
  • 2019-03-14
  • 2012-04-03
  • 2016-06-02
  • 1970-01-01
  • 2010-10-20
  • 1970-01-01
  • 2019-09-22
  • 2017-06-05
相关资源
最近更新 更多