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