我正在寻找一个快速函数(没有字符串)
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_length和 Fixnum#[] .
关于ruby - 在 Ruby 中计算整数的二进制描述中的前导数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39320903/