الفرق بين المراجعتين ل"Ruby/Integer/bit length"

من موسوعة حسوب
< Ruby‏ | Integer
اذهب إلى التنقل اذهب إلى البحث
سطر 8: سطر 8:
  
 
هذا التابع يعيد ناتج التعبير ''<code>ceil(log2(int < 0 ? -int : int+1))‎</code>''.
 
هذا التابع يعيد ناتج التعبير ''<code>ceil(log2(int < 0 ? -int : int+1))‎</code>''.
 +
 +
يمكن استخدام هذا التابع لرصد التجاوزات (overflow) في <code>[[Ruby/Array/pack|Array#pack]]</code> ، كما يلي:<syntaxhighlight lang="ruby">if n.bit_length < 32
 +
  [n].pack("l") # no overflow
 +
else
 +
  raise "overflow"
 +
end</syntaxhighlight>
  
 
==البنية العامة==
 
==البنية العامة==

مراجعة 22:47، 14 أكتوبر 2018

يعيد التابع bit_length‎ عدد بتات قيمة العدد الذي استُدعي معه.

يُقصد بـ "عدد البتات" موضع أعلى بتة والتي تختلف عن بتة الإشارة [sign bit] (حيث يكون موضع البتة الأقل دلالة [least significant bit] هو 1). إذا لم يكن تلك البتة موجودة (أي إذا كانت قيمة الموضع صفر أو ناقص واحد) ، فسيُعاد الصفر.

هذا التابع يعيد ناتج التعبير ceil(log2(int < 0 ? -int : int+1))‎.

يمكن استخدام هذا التابع لرصد التجاوزات (overflow) في Array#pack ، كما يلي:

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

البنية العامة

bit_length    integer

القيمة المُعادة

يعيد التابع bit_length‎ عدد بتات قيمة العدد الذي استُدعي معه.

أمثلة

مثال على استخدام التابع bit_length‎:

(-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

انظر أيضا

  • التابع &: ينفذ المعامل & عملية "و" (AND) بين بتات طرفي العملية، بتةً بتةً. 
  • التابع allbits?‎: يعيد التابع allbits?‎ القيمة true إن كانت قيم كل بتات ناتج العملية int & mask تساوي واحد. 

مصادر