ruby - 在 Ruby 中计算整数的二进制描述中的前导数

标签 ruby binary bit

我正在寻找一个快速函数(没有字符串)

leading_ones(0b11101)      # =>3
leading_ones(0b1111000110) # =>4

谢谢你的努力!

最佳答案

def leading_ones(n)
  nbr = 0
  (n.bit_length-1).downto(0) do |i|
    return nbr if n[i].zero?
    nbr += 1
  end
  nbr
end

leading_ones(6)
  #=> 2

注意 6.to_s(2) #=> "110"。这使用方法 Fixnum#bit_lengthFixnum#[] .

关于ruby - 在 Ruby 中计算整数的二进制描述中的前导数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39320903/

相关文章:

带前导零的 C# BitArray

ruby - 如何使用测试:Unit on a ruby file without classes (only methods)

binary - 将分数从十进制转换为二进制

JAVA猜数游戏使用方法: method for play again does not work properly

c - 获取位位置的最快解决方案

c - 我怎样才能屏蔽位?

ruby - 如何使用 MinGW 在 Windows XP 上编译和构建 taf2-curb Ruby gem?

ruby - 获取局部变量的名称

mysql - Ruby on Rails 4 选择 schema_migrations 错误

c - 在这种情况下如何修复 C 中的 SIGSEGV?