التحقق من كون رقمين صحيحين يحملان إشارتين متعاكستين
تتحقّق هذه الخوارزمية ممّا إذا كان رقمان صحيحان يمتلكان إشارتين مختلفتين دون استخدام أيٍّ من العوامل الرياضية.
لنفترض أنّ x و y هما عددان صحيحان. يأخذ البت الخاص بالإشارة القيمة 1
إذا كان العدد سالبًا، والقيمة 0
إذا كان العدد موجبًا. يمكن استخدام العامل XOR
(^
) للتحقق من اختلاف الإشارة بين العددين، فإن كانت الإشارتان مختلفتين فإنّ نتيجة المقارنة ستكون تعيين القيمة 1
للبت الخاص بالإشارة، بمعنى أنّ مقارنة x
و y
باستخدام العامل XOR
سيعطي عددًا سالبًا إذا حمل العددان إشارتين سالبتين.
تنفيذ الخوارزمية
تعرض الأمثلة التالية طريقة تنفيذ الخوارزمية في عدد من لغات البرمجة:
- C++:
#include<stdbool.h>
#include<stdio.h>
bool oppositeSigns(int x, int y)
{
return ((x ^ y) < 0);
}
// اختبار الدالة السابقة
int main()
{
int x = 100, y = -100;
if (oppositeSigns(x, y) == true)
printf ("Signs are opposite");
else
printf ("Signs are not opposite");
return 0;
}
- بايثون:
def oppositeSigns(x, y):
return ((x ^ y) < 0);
x = 100
y = 1
if (oppositeSigns(x, y) == True):
print "Signs are opposite"
else:
print "Signs are not opposite"
- جافا:
class GFG {
static boolean oppositeSigns(int x, int y)
{
return ((x ^ y) < 0);
}
// اختبار الدالة السابقة
public static void main(String[] args)
{
int x = 100, y = -100;
if (oppositeSigns(x, y) == true)
System.out.println("Signs are opposite");
else
System.out.println("Signs are not opposite");
}
}
تعطي الشيفرات السابقة المخرجات التالية:
Signs are opposite
مصادر
- صفحة Detect if two integers have opposite signs في توثيق الخوارزميات في موقع GeeksforGeeks.