خوارزميات الأعداد الثنائية

من موسوعة حسوب

تستخدم خوارزميات البتات Bitwise Algorithms لتنفيذ عمليات على مستوى البت bit-level أو لإجراء تعديلات على البتات وبطرق مختلفة. تكون العمليات المجراة على مستوى البت أسرع من العمليات العادية وتستخدم في بعض الأحيان لزيادة فعالية البرامج.

فعلى سبيل المثال: للتحقق من كون عددٍ معيّنٍ زوجيًا أو فرديًا، يمكن استخدام العامل (AND &). إذ لو جرى تعيين آخر بت في العامل فإنّ العدد يكون فرديًا، وإلا فإنّه زوجي. وهكذا إن لم يساوِ التعبير num & 1 صفرًا فإنّ العدد سيكون فرديًا وإلا فإنّه عدد زوجي.

زيادة عدد بمقدار واحد دون استخدام العوامل

تضيف هذه الخوارزمية العدد 1 على العدد المعطى دون استخدام أيٍّ من العوامل الرياضية مثل  ‎‘+’, ‘-‘, ‘*’, ‘/’, ‘++’, ‘–‘‎.

التحقق من كون رقمين صحيحين يحملان إشارتين متعاكستين

تتحقّق هذه الخوارزمية ممّا إذا كان رقمان صحيحان يمتلكان إشارتين مختلفتين دون استخدام أيٍّ من العوامل الرياضية.

العثور على العنصر الفريد في المصفوفة

تعثر هذه الخوارزمية على العنصر الفريد في مصفوفة تضمّ عناصر تتكرر ثلاث مرّات.

تبديل البتات في عدد معين

تبدّل هذه الخوارزمية بين موقعين (من الجانب الأيمن) في التمثيل البياني للعدد المعطى بشرط عدم حصول تداخل بين مجموعتي البتات، ثم تعيد النتيجة.

تدوير البتات

تدوير البتات Bit Rotation (أو الإزاحة الدائرية circular shift) هي عملية مشابهة لإزاحة البتات باستثناء أنّ البتات التي تخرج من أحد الأطراف تعود مرة أخرى من الطرف الآخر.

تعداد البتات المعينة الكلية في الأعداد من 1 إلى العدد المعطى

هناك عدة طرق لحساب مجموع عدد البتات المعينة في التمثيل الثنائي لجميع الأعداد بدءًا من 1 وانتهاءً بالعدد المعطى n.

إجراء عمليتي الجمع والطرح دون استخدام العوامل الحسابية

يمكن إجراء عمليتي الجمع والطرح على الأعداد الصحيحة دون استخدام العوامل وذلك بالتعامل مع التمثيلات الثنائية لهذه الأعداد.

مقارنة عددين صحيحن دون استخدام عوامل المقارنة

المطلوب في هذه المسألة هو عقد مقارنة بين عددين صحيحن دون استخدام أيٍّ من عوامل المقارنة.

حساب العدد الأكبر أو الأصغر بين عددين صحيحين دون استخدام التفريع

تكون عملية التفريع branching مكلفة في بعض الحالات النادرة على بعض الأجهزة؛ لذا فإنّ عملية إيجاد العدد الأكبر أو الأصغر بين عددين باستخدام التفريع ستكون عملية بطيئة.

إيجاد العدد الأصغر من بين ثلاثة أعداد دون استخدام عوامل المقارنة

المطلوب في هذه المسألة هو إيجاد العدد الأصغر من بين ثلاثة أعداد دون استخدام عوامل المقارنة.