CCalculate.Studio

💾 حاسبة العمليات على البتات

تعمل العمليات على البتات مباشرةً على الأرقام الثنائية المفردة (البتات) المكوِّنة للتمثيل الثنائي للعدد، بدلًا من التعامل مع العدد بوصفه قيمة عشرية كاملة. تنفّذ هذه الحاسبة العمليات الست القياسية على البتات — AND و OR و XOR و NOT والإزاحة إلى اليسار والإزاحة إلى اليمين — على أعداد صحيحة غير سالبة بطول 32 بت، وتعرض التمثيل الثنائي للمُدخلات وللنتيجة.

آخر مراجعة: 2026-07-07
Add as preferred on Google

فهم جدول الحقيقة للعمليات على البتات

تتبع كل عملية منطقية على البتات جدول حقيقة ثابتًا يُطبَّق باستقلال على كل زوج من مواضع البتات المتناظرة.

البت Aالبت BANDORXOR
00000
01011
10011
11110
  • تقصر هذه الحاسبة المُدخلات على مدى العدد الصحيح ذي الإشارة بطول 32 بت (من 0 إلى 2,147,483,647)، لأن معاملات البتات في JavaScript تحوّل الأعداد داخليًا إلى تمثيل بطول 32 بت قبل إجراء العملية، وفقًا لمواصفة ECMAScript.
  • تعطي NOT (~A) دائمًا نتيجة تساوي −(A + 1) عند تفسيرها كعدد صحيح ذي إشارة بطول 32 بت — وتعرض هذه الحاسبة المكافئ بلا إشارة بطول 32 بت (فمثلًا تظهر ~12 على أنها 4,294,967,283 لا −13) حتى يكون التمثيل الثنائي المعروض غير ملتبس.
  • تُقصر مقادير الإزاحة (B) الأكبر من 31 عند 31 في هذه الحاسبة، لأن إزاحة قيمة بطول 32 بت بمقدار 32 موضعًا أو أكثر في JavaScript تلتف دورةً كاملة (إذ تُستخدم البتات الخمس الدنيا من مقدار الإزاحة فقط) بدلًا من أن تعطي 0 كما قد يُتوقع حدسيًا.

ما هي العمليات على البتات؟

تعالج العملية على البتات العدد على مستوى أرقامه الثنائية المفردة (البتات)، فتقارن أصفار وآحاد تمثيله بالأساس 2 أو تزيحها، بدلًا من إجراء حساب عادي بالأساس 10. ويمكن كتابة أي عدد صحيح بالنظام الثنائي كسلسلة من البتات يمثل كل منها قوة من قوى 2 — فمثلًا يُكتب 12 بالنظام الثنائي 1100، أي 1×8 + 1×4 + 0×2 + 0×1.

أما العمليات المنطقية على البتات — AND و OR و XOR (أو الحصري) و NOT — فتقارن مواضع البتات المتناظرة في عددين (أو تعكس بتات عدد واحد) وفق قواعد المنطق البولياني القياسية، مطبَّقة على كل موضع بت باستقلال عن غيره. وتقوم عمليتا الإزاحة — يسارًا ويمينًا — بتحريك جميع بتات العدد عددًا محددًا من المواضع إلى اليسار أو اليمين، وهو ما يكافئ رياضيًا الضرب أو القسمة على قوة من قوى 2.

تُعد العمليات على البتات أساسية في علوم الحاسوب والبرمجة منخفضة المستوى: فهي تُستخدم لضبط أعلام الخيارات المفردة ومسحها وفحصها (أعلام البتات)، وللضرب والقسمة السريعين على قوى 2، وفي خوارزميات التعمية، وفي معالجة الرسوميات والألوان (دمج قنوات الأحمر والأخضر والأزرق)، وفي ترميز البيانات المضغوط.

كيفية استخدام حاسبة العمليات على البتات

  1. أدخل العدد الأول (A) كعدد صحيح غير سالب (من 0 إلى 2,147,483,647، وهو مدى العدد الصحيح ذي الإشارة بطول 32 بت).
  2. أدخل العدد الثاني (B). في عمليات AND و OR و XOR يكون هذا هو المعامل الثاني الذي يُقارن مع A بتًا ببت. وفي عمليات الإزاحة يكون عدد المواضع المراد الإزاحة بها (المدى الفعال 0–31؛ وتُقصر القيم الأكبر عند 31). أما في NOT فيُهمل B لأن العملية تطبَّق على A وحده.
  3. اختر العملية: AND أو OR أو XOR أو NOT أو الإزاحة يسارًا أو الإزاحة يمينًا.
  4. اقرأ النتيجة العشرية إلى جانب التمثيل الثنائي لكل من A و B (أو مقدار الإزاحة) والنتيجة.

كيف تعمل كل عملية على البتات

AND: تكون البِتة 1 فقط إذا كانت البِتتان المتناظرتان كلتاهما 1
OR: تكون البِتة 1 إذا كانت إحدى البِتتين المتناظرتين على الأقل 1
XOR: تكون البِتة 1 إذا كانت إحدى البِتتين المتناظرتين فقط 1
الإزاحة لليسار: A << B = A × 2^B; الإزاحة لليمين: A >> B = ⌊A ÷ 2^B⌋
مثال محلول: 12 AND 10 = 8; 12 OR 10 = 14; 12 XOR 10 = 6; 12 << 2 = 48; 12 >> 2 = 3

تقارن AND كل موضع بت وتُرجع 1 فقط حيث يكون البتان كلاهما 1، وإلا فتُرجع 0. مثال محلول: 12 (1100) AND 10 (1010) = 8 (1000)، إذ إن الموضع ذا القيمة 8 وحده هو الذي يحمل 1 في كلا العددين.

تقارن OR كل موضع بت وتُرجع 1 حيث يكون أحد البتين على الأقل مساويًا 1. مثال محلول: 12 (1100) OR 10 (1010) = 14 (1110). أما XOR (أو الحصري) فتُرجع 1 حيث يكون بت واحد بالضبط من الاثنين مساويًا 1 (لا كلاهما). مثال محلول: 12 (1100) XOR 10 (1010) = 6 (0110).

تعكس NOT كل بت في عدد واحد (يصير 0 واحدًا، ويصير 1 صفرًا). وبما أن هذه الحاسبة تعمل على قيم بطول 32 بت، فإن NOT 12 تقلب البتات الاثنتين والثلاثين جميعها فتنتج 4,294,967,283 عند تفسيرها كعدد صحيح بلا إشارة بطول 32 بت (وهو تمثيل المتمم الثنائي للعدد −13 إذا فُسّر كعدد صحيح ذي إشارة).

تنقل الإزاحة يسارًا (A << B) كل بت من A إلى اليسار بمقدار B من المواضع، وتملأ البتات الدنيا المُخلاة بالأصفار — وهو ما يكافئ ضرب A في 2^B. مثال محلول: 12 << 2 = 48 (أي 12 × 2² = 12 × 4 = 48). وتنقل الإزاحة يمينًا (A >> B) كل بت من A إلى اليمين بمقدار B من المواضع مع إسقاط البتات الدنيا — وهو ما يكافئ القسمة الصحيحة لـ A على 2^B مع التقريب لأسفل. مثال محلول: 12 >> 2 = 3 (أي ⌊12 ÷ 4⌋ = 3).

أخطاء شائعة

  • الخلط بين AND/OR على البتات ونظيريهما المنطقيين (البوليانيين) — فمعاملات البتات تعمل على كل بت من العدد باستقلال، بينما تتعامل المعاملات المنطقية مع القيمة كلها كشرط واحد صواب/خطأ؛ والاثنان يعطيان نتائج مختلفة إلا في الحالة الخاصة للقيمتين 0 و1.
  • توقّع أن تعطي الإزاحة يسارًا بمقدار كبير عددًا أكبر بالتناسب دائمًا — فالإزاحة البعيدة بما يكفي قد تدفع بتات معنوية خارج حدود الـ 32 بت فتُسقط (طفح).
  • إساءة قراءة نتيجة NOT — لأن NOT تقلب كل بت من البتات الاثنتين والثلاثين، تبدو النتيجة العشرية بلا إشارة لـ ~A أكبر بكثير من A نفسه، مع أنها في تفسير المتمم الثنائي ذي الإشارة تمثل عددًا سالبًا صغيرًا هو −(A+1).
  • اعتبار الإزاحة يمينًا مكافئة للقسمة العادية دائمًا — فالإزاحة يمينًا على عدد صحيح غير سالب تطابق تمامًا القسمة الصحيحة لأسفل على قوة من قوى 2، لكن السلوك يختلف مع الأعداد السالبة تبعًا لاستخدام إزاحة حسابية أم منطقية.

الأسئلة الشائعة

ما الفرق بين AND على البتات و AND المنطقية؟

تقارن AND على البتات (&) عددين بتًا ببت وتُرجع عددًا جديدًا يكون فيه كل بت مساويًا 1 فقط إذا كان البتان المتناظران في المُدخلين مساويين 1 — فمثلًا 12 & 10 = 8. أما AND المنطقية (&&) فتتعامل مع كل قيمة كاملة كشرط واحد صواب/خطأ وتُرجع أحد المعاملين الأصليين أو قيمة منطقية، إذ تقيّم صدق القيمة لا تدمج البتات المفردة. وللمعاملين أغراض مختلفة ونتائجهما متباينة جدًا في العموم.

كيف تعمل XOR؟

تقارن XOR (أو الحصري) عددين بتًا ببت وتُرجع 1 في كل موضع يكون فيه بت واحد بالضبط من البتين المتناظرين مساويًا 1 (لا كلاهما ولا أيّ منهما). في حالة 12 (1100) XOR 10 (1010): تعطي مقارنة كل موضع بت النتيجة 0110، وهي 6 بالنظام العشري. وتُستخدم XOR كثيرًا لتبديل حالة البتات، ولكشف الفروق بين قيمتين، وفي حسابات المجموع الاختباري والتماثل البسيطة.

ماذا تفعل الإزاحة إلى اليسار؟

تنقل الإزاحة إلى اليسار (A << B) كل بت في التمثيل الثنائي لـ A بمقدار B من المواضع نحو اليسار، وتملأ المواضع الدنيا المُخلاة حديثًا بالأصفار. وهذا يكافئ رياضيًا ضرب A في 2 مرفوعة للأس B. فمثلًا 12 << 2 = 48، وهي النتيجة نفسها لـ 12 × 2² = 12 × 4 = 48.

ماذا تفعل NOT على البتات؟

تعكس NOT على البتات (~A) كل بت من A — فيصير كل 0 واحدًا وكل 1 صفرًا. وعند تطبيقها على تمثيل العدد 12 بطول 32 بت (00000000000000000000000000001100) تنتج قيمة بجميع تلك البتات مقلوبة، وهي تظهر كعدد بلا إشارة بطول 32 بت بالقيمة 4,294,967,283، بينما تمثل بصيغة المتمم الثنائي ذي الإشارة العدد −13 (وفق المتطابقة ~A = −(A+1)).

كيف تختلف الإزاحة إلى اليمين عن القسمة؟

بالنسبة للأعداد الصحيحة غير السالبة، تعطي الإزاحة إلى اليمين (A >> B) النتيجة نفسها تمامًا التي تعطيها القسمة الصحيحة لأسفل على 2^B: أي A >> B = ⌊A ÷ 2^B⌋. فمثلًا 12 >> 2 = 3، وهو ما يطابق ⌊12 ÷ 4⌋ = 3. وقد تتباعد العمليتان مع الأعداد السالبة، حيث يؤثر نوع الإزاحة تحديدًا (حسابية أم منطقية) في كيفية التعامل مع بت الإشارة — وهي تفصيلة تهمّ سياقات البرمجة منخفضة المستوى.

لماذا تقتصر العمليات على البتات هنا على أعداد بطول 32 بت؟

تحوّل معاملات البتات المدمجة في JavaScript (&، |، ^، ~، <<، >>) معاملاتها داخليًا إلى أعداد صحيحة بطول 32 بت قبل تنفيذ العملية، وفقًا لمواصفة لغة ECMAScript. وتحاكي هذه الحاسبة ذلك السلوك القياسي، لذا تقتصر المُدخلات على المدى القابل للتمثيل بـ 32 بت (من 0 إلى 2,147,483,647 بالنسبة للقيم غير السالبة المقبولة هنا).

المراجع

  1. Warren HS Jr. Hacker's Delight. 2nd ed. Addison-Wesley, 2012. (Standard reference for bitwise algorithms and two's-complement arithmetic.)
  2. ECMA International. ECMA-262: ECMAScript Language Specification, §6.1.6.1 (Bitwise operators, ToInt32/ToUint32). ecma-international.org.
  3. Patterson DA, Hennessy JL. Computer Organization and Design: The Hardware/Software Interface. 5th ed. Morgan Kaufmann, 2013. (Binary representation and bitwise logic.)

نظرية الأعداد · جميع الحاسبات

حاسبات ذات صلة