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

من موسوعة حسوب
< Ruby‏ | Integer
اذهب إلى التنقل اذهب إلى البحث
ط (مراجعة وتدقيق)
 
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: التابع <code>bit_length‎</code> الخاص بالصنف <code>Integer</code> في روبي}}</noinclude>
+
<noinclude>{{DISPLAYTITLE: التابع <code>Integer.bit_length‎</code> في روبي}}</noinclude>
 
[[تصنيف: Ruby]]
 
[[تصنيف: Ruby]]
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby Integer]]
 
[[تصنيف: Ruby Integer]]
يعيد التابع <code>bit_length‎</code> عدد بتات قيمة العدد الذي استُدعي معه.  
+
يعيد التابع <code>bit_length‎</code> عدد بتات العدد الذي استُدعي معه.  
  
يُقصد بـ "عدد البتات" موضع أعلى بتة والتي تختلف عن بتة الإشارة [sign bit] (حيث يكون موضع  البتة الأقل دلالة [least significant bit] هو 1). إذا لم يكن تلك البتة موجودة (أي إذا كانت قيمة الموضع صفر أو ناقص واحد) ، فسيُعاد الصفر.
+
يُقصد بـ "عدد البتات" موضع البت الأعلى والذي يختلف عن بت الإشارة (sign bit، حيث يكون موضع  البتة الأقل أهمية [least significant bit] هو 1). إذا لم يكن ذلك البت موجودًا (أي إذا كانت قيمة الموضع صفر أو ناقص واحد)، فستعاد القيمة 0.
  
هذا التابع يعيد ناتج التعبير ''<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
+
يمكن استخدام هذا التابع لرصد حالة الطفحان (overflow) في <code>[[Ruby/Array/pack|Array.pack]]</code>، كما في الحالة التالية:<syntaxhighlight lang="ruby">if n.bit_length < 32
 
   [n].pack("l") # no overflow
 
   [n].pack("l") # no overflow
 
else
 
else
سطر 17: سطر 17:
 
==البنية العامة==
 
==البنية العامة==
 
<syntaxhighlight lang="ruby">bit_length  →  integer‎</syntaxhighlight>
 
<syntaxhighlight lang="ruby">bit_length  →  integer‎</syntaxhighlight>
==القيمة المُعادة==
+
==القيمة المعادة==
يعيد التابع <code>bit_length‎</code> عدد بتات قيمة العدد الذي استُدعي معه.
+
يعاد عدد صحيح يمثِّل عدد بتات قيمة العدد الذي استُدعي معه.
  
 
==أمثلة==
 
==أمثلة==
سطر 45: سطر 45:
 
‎</syntaxhighlight>
 
‎</syntaxhighlight>
 
==انظر أيضا==
 
==انظر أيضا==
* التابع <code>[[Ruby/Integer/and|&]]</code>: ينفذ المعامل <code>&</code> عملية "و" (AND) بين بتات طرفي العملية، بتةً بتةً
+
* المعامل <code>[[Ruby/Integer/and|&]]</code>: ينفذ العملية AND بين بتات العددين المعطيين
  
* التابع <code>[[Ruby/Integer/allbits-3F|allbits?]]</code>‎: يعيد التابع <code>allbits?‎</code> القيمة <code>true</code> إن كانت قيم كل بتات ناتج العملية <code>int & mask</code> تساوي واحد. 
+
* التابع <code>[[Ruby/Integer/anybits-3F|anybits?]]</code>‎: يعيد القيمة <code>true</code> إن كانت قيمة إحدى بتات ناتج تطبيق العملية <code>[[Ruby/Integer/and|&]]</code> على العدد الصحيح المعطى مع القناع الممرر إليه تساوي واحد.
 
==مصادر==
 
==مصادر==
*[http://ruby-doc.org/core-2.5.1/Integer.html#method-i-bit_length قسم التابع bit_length‎ في الصنف Integer‎ في توثيق روبي الرسمي.]
+
*[http://ruby-doc.org/core-2.5.1/Integer.html#method-i-bit_length قسم التابع bit_length‎ في الصنف Integer‎ في توثيق روبي الرسمي.]

المراجعة الحالية بتاريخ 12:09، 14 نوفمبر 2018

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

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

هذا التابع يعيد ناتج الاستدعاء 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‎:

(-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 بين بتات العددين المعطيين. 
  • التابع anybits?‎: يعيد القيمة true إن كانت قيمة إحدى بتات ناتج تطبيق العملية & على العدد الصحيح المعطى مع القناع الممرر إليه تساوي واحد.

مصادر