عوامل تشغيل منطقية و Bitwise في Visual Basic

تـقارن عوامل التشغيل المنطقية Boolean التعبيرات و تقوم بإرجاع Boolean النتيجة. And, Or, AndAlso, OrElse، و Xor عوامل التشغيل هم الـثنائي لأنها تأخذ معاملين، أثناء Not عامل التشغيل هو الأحادية لأنه يأخذ مُعامل واحد. بعض هذه العوامل يمكنه تنفيذ عمليات المنطقية المختصة بالبت على القيم المتكاملة.

عامل التشغيل المنطقي أحادي

not عامل التشغيل (Visual Basic) ينفذ الـعلامة السالب المنطقية على Boolean التعبير. تعطي العكس المنطقي للمُعامل الخاص به. إذا كان التعبير يقيم الى True، ثم Not يقوم بإرجاع False; إذا تم تقييم التعبير إلى False، ثم Not يقوم بإرجاع True. فيما يلي مثال يوضّح ذلك.

Dim x, y As Boolean
x = Not 23 > 14
y = Not 23 > 67
' The preceding statements set x to False and y to True.

عوامل التشغيل المنطقية الثنائية

عامل التشغيل And في (Visual Basic) ينفذ الميزانية المنطقية على اثنين من Boolean التعبيرات. إذا كان كلا التعبيرين يتم تقييمها الى True، ثم And يقوم بإرجاع True. إذا تم تقييم تعبير واحد على الأقل إلى False، ثم And يقوم بإرجاع False.

عامل التشغيل or في (Visual Basic) ينفذ الانفصال المنطقية أو الـتضمينعلى اثنين من Boolean التعبيرات. إذا تم تقييم التعبير إلى True، أو كلاهما يقيم إلى True، ثم Or يقوم بإرجاع True. إذا لم يتم تقييم أي تعبير إلى True, Or يقوم بإرجاع False.

عامل التشغيل Xor في (Visual Basic) ينفذ استبعاد المنطقية على اثنين من Boolean التعبيرات. إذا تم تقييم تعبير واحد فقط إلى True، وليس كلاهما, Xor يقوم بإرجاع True. إذا كان كلا التعبيرين يتم تقييمها الى True، ثم FalseXor يقوم بإرجاعFalse.

يوضح المثال التاليAnd, Or، و Xor عوامل التشغيل.

Dim a, b, c, d, e, f, g As Boolean

a = 23 > 14 And 11 > 8
b = 14 > 23 And 11 > 8
' The preceding statements set a to True and b to False.

c = 23 > 14 Or 8 > 11
d = 23 > 67 Or 8 > 11
' The preceding statements set c to True and d to False.

e = 23 > 67 Xor 11 > 8
f = 23 > 14 Xor 11 > 8
g = 14 > 23 Xor 8 > 11
' The preceding statements set e to True, f to False, and g to False.

العمليات المنطقية للدوائر القصيرة

عامل التشغيل AndAlso يشبه جداً And عامل التشغيل, في أنه ينفذ العطف المنطقية أيضاً على اثنين Boolean التعبيرات. الفرق الأساسي بينهما هو AndAlso يعرض الدائرة القصيرة السلوك. إذا كان التعبير الأول في AndAlso التعبير يقيم إلى False، اذا التعبير الثاني لا يتم تقييمه لأنه لا يمكنه تبديل النتيجة النهائية و AndAlso يقوم بإرجاع False.

وبشكل مماثل، عامل OrElse ينفذ انصال منطقي للدائرة الكهربائية القصيرة على اثنين من Boolean التعبيرات. إذا كان التعبير الأول في OrElse التعبير يقيم إلى True، اذا التعبير الثاني لا يتم تقييمه لأنه لا يمكنه تبديل النتيجة النهائية و OrElse يقوم بإرجاع True.

تبادل الدوائر الكهربائية القصيرة

الدوائر القصيرة يمكن أن يحسن الأداء وذلك عن طريق عدم تقييم تعبير الذي لا يمكنه تبديل العملية المنطقية. ومع ذلك، إذا كان ذلك التعبير يقوم بتنفيذ إجراءات إضافية, الدوائر القصيرة تتخطى هذه الإجراءات. على سبيل المثال، إذا كان التعبير يتضمن استدعاء إلى Function الإجراء, ذلك الإجراء لا يستدعى ى إذا كان التعبير دائرة قصيرة و أية تعليمات برمجية إضافية موجودة في Function لا تعمل. إذا كان يعتمد منطق البرنامج على أي من تعليمات برمجية إضافية تلك ، من المحتمل تجنب عوامل التشغيل الدئرة القصيرة.

يوضح المثال التالي الفرق بين And, Or، و مثيلاتها الدائرة القصيرة.

Dim amount As Integer = 12
Dim highestAllowed As Integer = 45
Dim grandTotal As Integer
If amount > highestAllowed And checkIfValid(amount) Then
    ' The preceding statement calls checkIfValid().
End If
If amount > highestAllowed AndAlso checkIfValid(amount) Then
    ' The preceding statement does not call checkIfValid().
End If
If amount < highestAllowed Or checkIfValid(amount) Then
    ' The preceding statement calls checkIfValid().
End If
If amount < highestAllowed OrElse checkIfValid(amount) Then
    ' The preceding statement does not call checkIfValid().
End If
Function checkIfValid(ByVal checkValue As Integer) As Boolean
    If checkValue > 15 Then
        MsgBox(CStr(checkValue) & " is not a valid value.")
        ' The MsgBox warning is not displayed if the call to
        ' checkIfValid() is part of a short-circuited expression.
        Return False
    Else
        grandTotal += checkValue
        ' The grandTotal value is not updated if the call to
        ' checkIfValid() is part of a short-circuited expression.
        Return True
    End If
End Function

في المثال السابق، لاحظ أن بعض تعليمات برمجية الهامة داخل checkIfValid() لا تعمل عندما يكون الاستدعاء دائرة كهربائية قصيرة. أولIf الكشف يستدعي checkIfValid() بالرغم 12 > 45 يقوم بإرجاع False، لأن And لم يقم بدائرة قصيرة. الكشف If الثاني لا يستدعي checkIfValid()، لأن عند 12 > 45 يقوم بإرجاع False, AndAlso دائرة قصيرة التعبير الثاني. الكشفIf الثالث يستدعي checkIfValid() بالرغم 12 < 45 يقوم بإرجاع True، لأن Or لم يقم بدائرة قصيرة. الكشف If الرابع لا يستدعي checkIfValid()، لأن عند 12 < 45 يقوم بإرجاع True, OrElse دائرة قصيرة التعبير الثاني.

العمليات المختصة بالبت

تقيم عمليات Bitwise قيمتين متكاملتين في شكل ثنائي (الأساس 2). يقارنان البتات في المواضع المقابلة ثم تعيين القيمة على المقارنة. فيما يلي مثال يوضح عامل And.

Dim x As Integer
x = 3 And 5

المثال السابق يعيين قيمة x الى 1. يحدث ذلك للأسباب التالية:

  • معاملة القيم كثنائي:

    3 في شكل ثنائي = 011

    5 في شكل ثنائي = 101

  • And عامل التشغيل يقارن التمثيل الثنائي, موضع ثنائي واحد (بت) في كل مرة. إذا كان كلا البت في موضع محدد هي 1 اذا يتم وضع 1 في هذا الموضع في الناتج. إذا كان البت إما 0, يتم وضع 0 في هذا الموضع في الناتج. في المثال السابق يعمل هذا كما يلي:

    011 (3 في شكل ثنائي)

    101 ( 5 في شكل ثنائي)

    001 (النتيجة, في شكل ثنائي)

  • يـتم معاملة النتيجة كعدد عشري. القيمة 001 هي تمثيل ثنائي لـ 1, لذلكx = 1.

المختصة بالبتOr العملية مماثلة, عدا أنه يتم تعيين 1 إلى النتيجة بت إذا كان لا أحد أو كليهما وحدات البت التي تمت مقارنتها هو 1. Xor يعيّن 1 إلى النتيجة بت إذا واحد بالضبط من البتات تمت مقارنتها (وليس كلاهما) هي 1. Not يأخذ معامل مفرد و عكس كل بت، بما في ذلك بت التسجيل ثم يقوم بتعيين هذه القيمة إلى الناتج. وهذا يعني أن للأرقام موجبة الاشارة, Not دوماً بإرجاع قيمة سالبة و للأرقام السالبة Not دوماً بإرجاع القيمة صفر أو موجب.

AndAlso و OrElse العوامل لا تدعم عمليات مختصة بالبت.

ملاحظة

يمكن تنفيذ عمليات مختة بالبت على الأنواع المتكاملة فقط. يجب أن يتم تحويل قيم الفاصلة العائمة إلى أنواع متكاملة قبل إمكانية متابعة تشغيل مختص بالبت.

راجع أيضًا:

المرجع

عوامل تشغيل المنطقية/الأحادية البت

المبادئ

تعبيرات Boolean

عوامل التشغيل الحسابية في (Visual Basic)

عوامل تشغيل المقارنة في Visual Basic

عوامل تشغيل التسلسل في Visual Basic

مجموعة ذات كفاءة من عوامل التشغيل