الوقت/الأرقام
العمليات على البتات
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
- Enter one or two numbers in any base (binary, hex, decimal) and pick an operation (AND, OR, XOR, NAND, NOR, XNOR, NOT, or a shift).
- Pick a bit width (8/16/32/64 bits) — it affects how NOT and shifts behave at the number's boundaries.
- The result is shown instantly in several number bases for easy comparison.
Common uses
- Working with permission or setting flags packed into a single number (file system access rights, for example).
- Debugging a network protocol or binary format where fields are packed at the individual-bit level.
- A teaching example for understanding binary number representation and operations on it.
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 عملية سريعة واحدة.