الفرق بين المراجعتين ل"Ruby/Integer/bit length"
اذهب إلى التنقل
اذهب إلى البحث
جميل-بيلوني (نقاش | مساهمات) ط (مراجعة وتدقيق) |
|||
سطر 1: | سطر 1: | ||
− | <noinclude>{{DISPLAYTITLE: التابع <code>bit_length | + | <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). إذا لم يكن ذلك البت موجودًا (أي إذا كانت قيمة الموضع صفر أو ناقص واحد)، فستعاد القيمة 0. |
− | هذا التابع يعيد ناتج | + | هذا التابع يعيد ناتج الاستدعاء <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 | [n].pack("l") # no overflow | ||
else | else | ||
سطر 17: | سطر 17: | ||
==البنية العامة== | ==البنية العامة== | ||
<syntaxhighlight lang="ruby">bit_length → integer</syntaxhighlight> | <syntaxhighlight lang="ruby">bit_length → integer</syntaxhighlight> | ||
− | ==القيمة | + | ==القيمة المعادة== |
− | + | يعاد عدد صحيح يمثِّل عدد بتات قيمة العدد الذي استُدعي معه. | |
==أمثلة== | ==أمثلة== | ||
سطر 45: | سطر 45: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==انظر أيضا== | ==انظر أيضا== | ||
− | * | + | * المعامل <code>[[Ruby/Integer/and|&]]</code>: ينفذ العملية AND بين بتات العددين المعطيين. |
− | * التابع <code>[[Ruby/Integer/ | + | * التابع <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 قسم | + | *[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
إن كانت قيمة إحدى بتات ناتج تطبيق العملية&
على العدد الصحيح المعطى مع القناع الممرر إليه تساوي واحد.