ما هي حاسبة OR الثنائية؟
تقوم هذه الحاسبة بحساب عملية OR الثنائية (bitwise OR) لعددين صحيحين، وتُكتب في معظم لغات البرمجة على الصورة a | b. تقارن عملية OR العددين بِتًّا بِتًّا، وتُنتج نتيجة يكون فيها كل بِت مساويًا للقيمة 1 إذا كان أحد البِتَّين المتقابلين (أو كلاهما) يساوي 1، بينما يكون البِت 0 فقط عندما يكون البِتَّان معًا يساويان 0.
طريقة الاستخدام
أدخل العدد الصحيح الأول (A) ثم العدد الصحيح الثاني (B)، واقرأ النتيجة بالنظام العشري. الأداة تدعم الأعداد الصحيحة الموجبة والسالبة على حدٍّ سواء. تعمل الحاسبة بالكامل في الأساس العشري (base 10) في الإدخال والإخراج، لكنها داخليًا تعالج كل قيمة وفق تمثيلها الثنائي (binary).
شرح القاعدة الحسابية
تُنفَّذ العملية لكل بِت على حدة باستخدام جدول الحقيقة الخاص بـ OR:
$$\text{Result} = \text{A} \mathbin{|} \text{B}$$\(0\mathbin{|}0=0\)، \(0\mathbin{|}1=1\)، \(1\mathbin{|}0=1\)، \(1\mathbin{|}1=1\). على سبيل المثال، لنأخذ A = 12 وB = 10. بالنظام الثنائي يكون 12 = 1100 و10 = 1010. وبمحاذاة العددين وتطبيق OR على كل عمود نحصل على 1110، وهو ما يساوي 14 بالنظام العشري. إذًا \(12 \mathbin{|} 10 = 14\).
مثال محلول
لنفترض أنك تريد حساب \(5 \mathbin{|} 3\). بالنظام الثنائي يكون 5 = 101 و3 = 011. وبتطبيق OR على كل بِت: \(1\mathbin{|}0=1\)، \(0\mathbin{|}1=1\)، \(1\mathbin{|}1=1\)، فنحصل على 111 = 7. وتُرجع الحاسبة الناتج 7.
مرجع قيم العملية OR الثنائية الشائعة
الجدول أدناه يعطي \(A \mathbin{|} B\) لكل زوج من المعاملات الصغيرة من 0 إلى 8. اقرأ الصف الخاص بـ A والعمود الخاص بـ B؛ الخلية هي النتيجة العشرية.
| | | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 1 | 1 | 1 | 3 | 3 | 5 | 5 | 7 | 7 | 9 |
| 2 | 2 | 3 | 2 | 3 | 6 | 7 | 6 | 7 | 10 |
| 3 | 3 | 3 | 3 | 3 | 7 | 7 | 7 | 7 | 11 |
| 4 | 4 | 5 | 6 | 7 | 4 | 5 | 6 | 7 | 12 |
| 5 | 5 | 5 | 7 | 7 | 5 | 5 | 7 | 7 | 13 |
| 6 | 6 | 7 | 6 | 7 | 6 | 7 | 6 | 7 | 14 |
| 7 | 7 | 7 | 7 | 7 | 7 | 7 | 7 | 7 | 15 |
| 8 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 8 |
القطر (حيث A = B) يعود دائماً بالمعامل نفسه، لأن x | x = x.
العملية OR الثنائية هي الطريقة القياسية لدمج رايات الأذونات. بتات الأذونات الشائعة بأسلوب يونكس هي القراءة = 4 (100)، الكتابة = 2 (010)، التنفيذ = 1 (001):
| التركيب | التعبير | عشري | ثنائي |
|---|---|---|---|
| قراءة + كتابة | 4 | 2 | 6 | 110 |
| قراءة + تنفيذ | 4 | 1 | 5 | 101 |
| كتابة + تنفيذ | 2 | 1 | 3 | 011 |
| قراءة + كتابة + تنفيذ (rwx) | 4 | 2 | 1 | 7 | 111 |
| بايتان مدمجان | 240 | 15 | 255 | 11111111 |
المصطلحات الرئيسية
- بت
-
أصغر وحدة من البيانات الرقمية، تحمل قيمة ثنائية واحدة إما
0أو1. مجموعة من 8 بتات تشكل بايتاً. - بت محدد / غير محدد
-
البت المحدد له القيمة
1؛ البت غير المحدد (أو الممسوح) له القيمة0. تُستخدم العملية OR الثنائية عادة لـ تحديد بتات معينة دون التأثير على الأخرى. - قناع البتات
- عدد صحيح يتم اختيار نمط بتاته لتحديد أو تعيين أو مسح بتات معينة في قيمة أخرى. دمج قيمة مع قناع باستخدام OR يفرض تعيين كل بت محدد في القناع في النتيجة.
- علم
-
بت فردي (غالباً ما يُعطى ثابت مسمى) يُستخدم لتمثيل إعداد تشغيل/إيقاف. يتم حزم عدة علامات في عدد صحيح واحد ودمجها مع OR، على سبيل المثال
READ | WRITE. - تمثيل المتمم الثنائي
-
الطريقة القياسية التي تمثل بها الحواسيب الأعداد الصحيحة الموقعة. البت الأكثر أهمية يحمل وزناً سالباً، لذا فإن عدد
n-بت يتراوح من \(-2^{n-1}\) إلى \(2^{n-1}-1\). على سبيل المثال، يتم تخزين \(-1\) كجميع البتات 1. - البت الأكثر / الأقل أهمية (MSB / LSB)
- MSB هو البت الأيسر، الذي يحمل أكبر قيمة موضع (والإشارة في تمثيل المتمم الثنائي)؛ LSB هو البت الأيمن، بقيمة موضع \(2^0 = 1\).
- الأساس 10 مقابل الأساس 2
- الأساس 10 (عشري) هو نظام الأرقام اليومي الذي يستخدم الأرقام 0-9. الأساس 2 (ثنائي) يستخدم فقط 0 و 1، حيث تساوي كل موضع قوة من اثنين. تعمل العمليات الثنائية على تمثيل الأساس 2، بينما تعرض هذه الآلة الحاسبة النتيجة بالأساس 10.
الأسئلة الشائعة
هل عملية OR الثنائية مماثلة لعملية الجمع؟ لا. عملية OR لا تُجري أي حمل (carry) أبدًا. فالناتج \(1\mathbin{|}1\) يبقى 1، بينما \(1+1\) يُنتج حملًا ويصبح 10 بالنظام الثنائي. ولا يتطابق الناتجان إلا عندما لا يشترك العددان في أي بِت مضبوط على 1.
وماذا عن الأعداد السالبة؟ تُمثَّل الأعداد الصحيحة السالبة بطريقة المتمم الثنائي (two's complement)، لذا فإن تطبيق OR عليها يتبع القواعد نفسها على مستوى البِتات بما فيها بِت الإشارة.
لماذا تُعد عملية OR مفيدة؟ تُستخدم OR عادةً لضبط (تشغيل) بِتات معينة أو لدمج قيم الأعلام (flags)، مثل دمج أقنعة الصلاحيات (permission masks).