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

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

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

لنفترض أنّ 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

مصادر