الفرق بين المراجعتين لصفحة: «Algorithms/opposite signs»

من موسوعة حسوب
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:التحقق من كون رقمين صحيحين يحملان إشارتين متعاكستين}}</noinclude> تتحقّق هذه الخوار...'
 
لا ملخص تعديل
سطر 2: سطر 2:
تتحقّق هذه الخوارزمية ممّا إذا كان رقمان صحيحان يمتلكان إشارتين مختلفتين دون استخدام أيٍّ من العوامل الرياضية.
تتحقّق هذه الخوارزمية ممّا إذا كان رقمان صحيحان يمتلكان إشارتين مختلفتين دون استخدام أيٍّ من العوامل الرياضية.


لنفترض أنّ x و y هما عددان صحيحان. يأخذ البت الخاص بالإشارة القيمة <code>1</code> إذا كان العدد سالبًا، والقيمة <code>0</code> إذا كان العدد موجبًا. يمكن استخدام <code>XOR</code> للتحقق من اختلاف الإشارة بين العددين، فإن كانت الإشارتان مختلفتين فإنّ نتيجة المقارنة ستكون تعيين القيمة <code>1</code> للبت الخاص بالإشارة، بمعنى أنّ مقارنة <code>x</code> و <code>y</code> باستخدام <code>XOR</code> سيعطي عددًا سالبًا إذا حمل العددان إشارتين سالبتين.
لنفترض أنّ x و y هما عددان صحيحان. يأخذ البت الخاص بالإشارة القيمة <code>1</code> إذا كان العدد سالبًا، والقيمة <code>0</code> إذا كان العدد موجبًا. يمكن استخدام العامل <code>XOR</code> (<code>^</code>) للتحقق من اختلاف الإشارة بين العددين، فإن كانت الإشارتان مختلفتين فإنّ نتيجة المقارنة ستكون تعيين القيمة <code>1</code> للبت الخاص بالإشارة، بمعنى أنّ مقارنة <code>x</code> و <code>y</code> باستخدام العامل <code>XOR</code> سيعطي عددًا سالبًا إذا حمل العددان إشارتين سالبتين.


== تنفيذ الخوارزمية ==
== تنفيذ الخوارزمية ==

مراجعة 18:26، 28 نوفمبر 2019

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

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

مصادر