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

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

המאקרו bitRead(value, bit) מחזיר את ערכו של הביט שנמצא באינדקס bit, מתוך הערך של value.

פרמטרים

value הוא ערך קבוע או משתנה, שרוצים לקרוא את הערך של ביט מסוים בו. כיוון ש-bitRead הוא מאקרו ולא פונקציה, אין ל-value טיפוס משתנה קבוע – אך הקומפיילר ירשה לשלוח אליו רק טיפוסי מספרים שלמים (integer).

bit מציין את האינדקס של הביט הספציפי שרוצים לקרוא – האינדקסים מתחילים מ-0, שהוא הביט הימני ביותר במספר.

ערך חוזר

אפס (0) או אחד (1). מכיוון ש-bitRead הוא מאקרו ולא פונקציה, טיפוס המשתנה של הערך החוזר יהיה זהה לטיפוס של value

דוגמאות

int8_t b, x = 13;
// 13 in binary representation is 0b00001101

b = bitRead(x, 0); // b will be 1
b = bitRead(x, 1); // b will be 0
b = bitRead(x, 2); // b will be 1
b = bitRead(x, 3); // b will be 1
b = bitRead(x, 4); // b will be 0
b = bitRead(x, 5); // b will be 0
b = bitRead(x, 6); // b will be 0
b = bitRead(x, 7); // b will be 0

x = -x;
b = bitRead(x, 7);
// b will be 1 now because of the minus sign

הערות

  • כיוון ש-bitRead הוא מאקרו ולא פונקציה, אין לשלוח חישובים או קריאות לפונקציות כפרמטרים – הדבר עלול לגרום לתוצאות שגויות ובמקרים מסוימים גם לפגיעה בתפקוד הקוד כולו.
  • חשוב לזכור שבטיפוסי משתנים של מספרים שלמים בעלי סימן (signed), הביט השמאלי ביותר מציין את הסימן (0 פירושו מספר חיובי ו-1 פירושו מספר שלילי).
  • בגלל צורת הייצוג של מספרים במיקרו-בקר, במקרה של מספר שלילי, גם שאר הביטים יהיו שונים מאלה של מספר חיובי בעל ערך מוחלט זהה.

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

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