פירוט שפת תכנות - =| (פעולת bitwise OR על...)

פורום זה מכיל תרגום לעברית של מדריכים, דוגמאות קוד, פירוט שפת תכנות לכרטיסי Arduino וחומרים לימודיים אחרים מהאתר arduino.cc

פירוט שפת תכנות - =| (פעולת bitwise OR על...)

הודעהעל ידי Alex » ו' ספטמבר 19, 2014 2:56 pm

פעולה משולבת של השמה ו-OR על סיביות נפוצה בשימוש בין משתנה וקבוע כדי לאלץ סיביות מסוימות במשתנה למצב HIGH (ערך 1).

תבחיר
קוד: בחר הכל
x |= y;   // equivalent to x = x | y;

פרמטרים בתחביר:
x - משתנה מסוג char, int או long
y - משתנה מסוג char, int או long או קבוע עם מספר שלם

דוגמה
קוד: בחר הכל
   0  0  1  1    operand1
   0  1  0  1    operand2
   ----------
   0  1  1  1    (operand1 | operand2) - returned result


סיביות שעוברות פעולת OR עם 0 לא משנות את הערך שלהן, כך שאם משתנה myByte הוא מסוג byte, פעולה הבאה לא תשנה את הערך שלה:
קוד: בחר הכל
myByte | B00000000 = myByte;


סיביות שעוברות פעולת OR עם 1 משתנות ל-1, כך שבפעולה הבאה משנה את ערך המשתנה ל-B11111111:
קוד: בחר הכל
myByte | B11111111 = B11111111;


כתוצאה מכך, כדי לאלץ את ערכי סיביות 0 ו-1 ל-1, כאשר כל שאר הסיביות ישארו ללא שינוי, השתמשו בפעולה =| עם קבוע B00000011:
קוד: בחר הכל
   1  0  1  0  1  0  1  0    variable
   0  0  0  0  0  0  1  1    mask
   ----------------------
   1  0  1  0  1  0  1  1

 variable unchanged
                     bits set


כאן תוכלו לראות את אותה פעולה כאשר ערכי הסיביות שונו ל-x בדוגמה:
קוד: בחר הכל
   x  x  x  x  x  x  x  x    variable
   0  0  0  0  0  0  1  1    mask
   ----------------------
   x  x  x  x  x  x  1  1

 variable unchanged
                     bits set


כך שאם ערך המשתנה myByte היה B10101010, אחרי פעולת =| עם קבוע B00000011 נקבל B10101011.

ראו גם:
=& (פעולת bitwise AND על...)
& (bitwise AND)
| (bitwise OR)

פירוט שפת תכנות לסביבת Arduino


עמוד זה הוא תרגום של compound bitwise OR (|=) לפי רישיון Creative Commons Attribution-ShareAlike 3.0.
www.4project.co.il
כל הרכיבים לפרוייקט שלכם
סמל אישי של המשתמש
Alex
מנהל האתר
 
הודעות: 7459
הצטרף: ה' ינואר 28, 2010 8:27 pm

חזור אל תרגום מדריכים מהאתר arduino.cc

Jump box

מי מחובר

משתמשים הגולשים בפורום זה: CCBot [Bot]