التحقق من كون رقمين صحيحين يحملان إشارتين متعاكستين
اذهب إلى التنقل
اذهب إلى البحث
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
تتحقّق هذه الخوارزمية ممّا إذا كان رقمان صحيحان يمتلكان إشارتين مختلفتين دون استخدام أيٍّ من العوامل الرياضية.
لنفترض أنّ 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.