الوقت/الأرقام

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

AND/OR/XOR/NAND/NOR/XNOR/NOT والإزاحات على أعداد صحيحة بعرض محدد (8/16/32/64 بت) في أي نظام عد.

Bitwise operations work directly on a number's individual bits rather than its value as a whole — the basis for permission flags, network protocols, and low-level optimization.

How to use it

Common uses

Things to keep in mind

The result of NOT and shifts depends on the chosen bit width — the same number gives a different result at 8-bit versus 32-bit width because of the different number of bits involved.

XOR is often used to toggle a flag — applying XOR twice with the same value returns the original.

مقالة عن هذه الأداة: العمليات على البتات: كيف تعمل AND وOR وXOR على مستوى البت

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

ما الفرق بين AND وOR وXOR وNAND وNOR وXNOR وNOT؟

يعطي AND القيمة 1 فقط عندما يكون كلا البتين 1، ويعطي OR القيمة 1 عندما يكون أحدهما على الأقل 1، ويعطي XOR القيمة 1 عندما يختلف البتان. NAND/NOR/XNOR هي نفياتها، بينما يعكس NOT كل بت في معامل واحد.

كيف يتم التعامل مع عرض البت وإشارة العدد؟

اختر عرضًا من 8/16/32/64 بت — تحدث العمليات والإزاحات ضمن هذا النطاق. تُمثَّل الأعداد السالبة بمتمم الاثنين، لذا قد تبدو نتيجة NOT أو الإزاحة غير متوقعة إذا كنت معتادًا على الترميز العشري.

ما الفرق بين الإزاحة لليسار والإزاحة لليمين؟

تضيف الإزاحة لليسار (<<) أصفارًا إلى اليمين، مما يضاعف العدد فعليًا بـ 2 مرفوعة لقوة مقدار الإزاحة. يمكن أن تكون الإزاحة لليمين منطقية (تضيف أصفارًا إلى اليسار) أو حسابية (تحافظ على بت الإشارة) — يعتمد النوع على الوضع المختار.

لماذا لا يعمل تعبير مثل "if (a & b == c)" كما هو متوقع غالبًا؟

في معظم اللغات، يمتلك عامل المقارنة == أسبقية أعلى من عامل البتات &، لذا يُحسَب التعبير كـ"a & (b == c)"، وليس كما يقصد الكاتب عادة. لتجنب هذا الفخ، ضع العمليات على البتات دائمًا بين أقواس صريحة.

لماذا نستخدم أعلام البتات بدلًا من متغيرات بولية منفصلة؟

مجموعة من الأعلام مُعبّأة في رقم واحد تُخزَّن وتُنقَل بشكل أكثر إيجازًا (مثلًا في بروتوكولات الشبكة أو صيغ الملفات)، والتحقق من علم معيّن أو تغييره عبر AND/OR/XOR عملية سريعة واحدة.

مقالات: الوقت/الأرقام

وقت يونكس: لماذا تحسب الحواسيب الوقت منذ 1970

لماذا أصبح 1 يناير 1970 نقطة مرجعية للوقت في معظم أنظمة الحاسوب.

تعبيرات Cron: كيف تفكّ جدولة المهام

كيف تفكّ تعبيرًا مثل */15 * * * * وتعرف بالضبط متى ستُشغَّل المهمة.

أنظمة العد: لماذا توجد الأنظمة الثنائية والثمانية والسداسية عشرية

لماذا يُكتب اللون #FF5733 في CSS بأرقام سداسية عشرية لا عشرية.

الفرق بين التواريخ: لماذا عدّ الأيام أعقد مما يبدو

لماذا قد يعطي طرح التواريخ ببساطة نتيجة خاطئة بسبب السنوات الكبيسة.

حساب العمر: لماذا ليس مجرد طرح سنوات

لماذا قد يعطي طرح سنة الميلاد ببساطة عمرًا أكبر بسنة من العمر الحقيقي.

المناطق الزمنية: لماذا لا يعني UTC نفس معنى GMT

لماذا لا يتغيّر UTC أبدًا مرتين في السنة، بينما يتغيّر توقيت لندن (GMT/BST).

حاسبة المدة: كيف تجمع الساعات والدقائق والثواني بشكل صحيح

لماذا يجب "ترحيل" الباقي إلى الخانة التالية عند جمع الدقائق والثواني، تمامًا كما في الجمع العشري.

ISO 8601 Duration: كيف تكتب مدة بصيغة قياسية

لماذا تعني الصيغة PT1H30M «ساعة و30 دقيقة»، لا «دقيقة و30 ساعة».

رقم الأسبوع: لماذا تحسب دول مختلفة الأسابيع بطرق مختلفة

لماذا ينتمي 1 يناير أحيانًا إلى الأسبوع 52 أو 53 من العام السابق وفق معيار ISO 8601.

الأرقام الرومانية: كيف يعمل نظام بلا صفر وبلا منازل

لماذا يعني IV الرقم 4 لا 6، وكيف تعمل قاعدة الطرح في الأرقام الرومانية.

IEEE 754: لماذا لا يساوي 0.1 + 0.2 القيمة 0.3 في الكود

لماذا تعرض تقريبًا كل لغات البرمجة نتيجة 0.1 + 0.2 كـ0.30000000000000004.

الرقم كتابةً: لماذا نحوّل الأرقام إلى كلمات

لماذا تكتب المستندات المصرفية المبلغ بالأرقام والحروف معًا.