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

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث

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

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

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

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

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

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

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

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

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

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

تدوير البتات

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

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

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

عدّ البتات المعينة في عدد صحيح

المطلوب في هذه المسألة هو عد البتات المعيّنة (التي تحمل القيمة 1) في التمثيل الثنائي للعدد الصحيح المعطى.

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

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

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

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

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

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

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

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

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

القيمة المطلقة لعدد معين هي القيمة غير السالبة لذلك العدد دون النظر إلى إشارته، ويرمز لها بالرمز |x|.

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

المطلوب في هذه المسألة هو إيجاد حاصل قسمة عدد صحيح على عدد صحيح آخر دون استخدام عوامل الضرب والقسمة وباقي القسمة mod.