facebook pixel מדריך: פירוט שפת תכנות - =& (פעולת bitwise AND על...) - www.4project.co.il
Main logo www.4project.co.il
כל הרכיבים לפרוייקט שלכם
עגלת קניות

העגלה ריקה

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


2022-06-14 11:04:43
פעולה משולבת של השמה ו-AND על סיביות נפוצה בשימוש בין משתנה וקבוע כדי לאלץ סיביות מסוימות במשתנה למצב LOW (ערך 0). במדריכי תכנות בדרך כלל מכנים את הפעולה כניקוי או איפוס של הסיביות (clearing, resetting).

תבחיר

קוד: בחר הכל
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  0  0  1    (operand1 & operand2) - returned result


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


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


שימו לב:
בגלל שאנחנו מתמודדים עם סיביות בפקודה שפועלת על סיביות, יהיה יותר נוח לייצג את המספרים הקבועים בצורה בינרית (binary). למספרים יהיה אותו ערך כמו בצורות ייצוג אחרות, אבל הם יהיו קצת יותר קשים להבנה. למשל ה-B00000000 שבדוגמה נכתב לטובת הבהירות של כמות הביטים במספר, אבל ערך 0 תמיד ישאר 0 בכל שיטות הייצוג.
כתוצאה מכך, כדי לנקות (להפוך ל-0) סיביות 0 ו-1 של משתנה, כאשר כל שאר הסיביות ישארו ללא שינוי, השתמשו בפעולה =& עם קבוע B11111100:
קוד: בחר הכל
   1  0  1  0  1  0  1  0    variable 
   1  1  1  1  1  1  0  0    mask
   ----------------------
   1  0  1  0  1  0  0  0

variable unchanged
                     bits cleared


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

variable unchanged
                     bits cleared


כך שאם ערך המשתנה myByte היה B10101010, אחרי פעולת =& עם קבוע B1111100 נקבל B10101000.

ראו גם:

=| (פעולת bitwise OR על...)
& (bitwise AND)
| (bitwise OR)

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


עמוד זה הוא תרגום של compound bitwise AND (&=) לפי רישיון Creative Commons Attribution-ShareAlike 3.0.