- עמוד זה הוא חלק מהמדריך לפונקציות ארדואינו -
המאקרו bitWrite(x, n, b) כותב את הערך b בביט שנמצא באינדקס n במשתנה x.
פרמטרים
x הוא המשתנה, שרוצים לכתוב ביט מסוים בו. כיוון ש-bitWrite הוא מאקרו ולא פונקציה, אין ל-x טיפוס משתנה קבוע – אך הקומפיילר ירשה לשלוח אליו רק משתנים מטיפוסי מספרים שלמים (integer).
n מציין את האינדקס של הביט הספציפי שרוצים לכתוב אליו – האינדקסים מתחילים מ-0, שהוא הביט הימני ביותר במספר.
b הוא הערך שרוצים לכתוב לביט – 0 או 1.
ערך חוזר
הערך המעודכן של x. מכיוון ש-bitRead הוא מאקרו ולא פונקציה, טיפוס המשתנה של הערך החוזר יהיה זהה לטיפוס של x.
דוגמאות
int8_t x = 0; bitWrite(x, 0, 1); // x is now 1 (binary 00000001) bitWrite(x, 1, 1); // x is now 3 (binary 00000011) bitWrite(x, 2, 1); // x is now 7 (binary 00000111) bitWrite(x, 1, 0); // x is now 5 (binary 00000101) // Remeber that x is a signed integer... bitWrite(x, 7, 1); // x is now -123
הערות
- כיוון ש-bitWrite הוא מאקרו ולא פונקציה, אין לשלוח חישובים או קריאות לפונקציות כפרמטרים – הדבר עלול לגרום לתוצאות שגויות ובמקרים מסוימים גם לפגיעה בתפקוד הקוד כולו.
- מאחורי הקלעים, bitWrite פועל באמצעות קריאה סלקטיבית ל-bitSet או ל-bitClear, לפי הערך של b. ערך b שאינו 0 או 1 ייחשב כ-1.
- חשוב לזכור שבטיפוסי משתנים של מספרים שלמים בעלי סימן (signed), הביט השמאלי ביותר מציין את הסימן (אם ביט זה הוא 0 פירוש הדבר מספר חיובי, ואם 1 פירוש הדבר מספר שלילי).
- בגלל צורת הייצוג של מספרים במיקרו-בקר, במקרה של מספר שלילי, גם שאר הביטים יהיו שונים מאלה של מספר חיובי בעל ערך מוחלט זהה.