bitWrite – הסבר ופרטים

- עמוד זה הוא חלק מהמדריך לפונקציות ארדואינו -

המאקרו 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 פירוש הדבר מספר שלילי).
  • בגלל צורת הייצוג של מספרים במיקרו-בקר, במקרה של מספר שלילי, גם שאר הביטים יהיו שונים מאלה של מספר חיובי בעל ערך מוחלט זהה.

קישורים רלוונטיים

בלוג אישי בנושאי מייקינג, תכנות, מיקרו-בקרים ואלקטרוניקה