当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Ruby Integer.bit_length用法及代码示例


本文简要介绍ruby语言中 Integer.bit_length 的用法。

用法

bit_length → integer

返回 int 值的位数。

“Number of bits” 表示与符号位不同的最高位的位位置(其中最低有效位的位位置为 1)。如果没有这样的位(零或负一),则返回零。

IE。此方法返回 ceil(log2(int < 0 ? -int : int+1))

(-2**1000-1).bit_length   #=> 1001
(-2**1000).bit_length     #=> 1000
(-2**1000+1).bit_length   #=> 1000
(-2**12-1).bit_length     #=> 13
(-2**12).bit_length       #=> 12
(-2**12+1).bit_length     #=> 12
-0x101.bit_length         #=> 9
-0x100.bit_length         #=> 8
-0xff.bit_length          #=> 8
-2.bit_length             #=> 1
-1.bit_length             #=> 0
0.bit_length              #=> 0
1.bit_length              #=> 1
0xff.bit_length           #=> 8
0x100.bit_length          #=> 9
(2**12-1).bit_length      #=> 12
(2**12).bit_length        #=> 13
(2**12+1).bit_length      #=> 13
(2**1000-1).bit_length    #=> 1000
(2**1000).bit_length      #=> 1001
(2**1000+1).bit_length    #=> 1001

此方法可用于检测 Array#pack 中的溢出,如下所示:

if n.bit_length < 32
  [n].pack("l") # no overflow
else
  raise "overflow"
end

相关用法


注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 Integer.bit_length。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。