🔢 درس 66: بیتها و عملگرهای بیتی
یک بایت را روی ۸ LED ببین و با &، |، ^ و شیفت بازی کن.
سطح: پیشرفته · زمان: حدود 20 دقیقه · مفاهیم: بیت، بایت، bitRead
قدمهای این درس
- کامپیوتر فقط ۰ و ۱ میفهمد
- قدم ۱ — هشت LED، هشت بیت
- قدم ۲ — bitRead و شیفت
- اشتباه رایج: بیت ۸ که وجود ندارد
- چالش: شمارندهی دودویی
نمونهای از کد این درس
const int ledPins[8] = {2, 3, 4, 5, 6, 7, 8, 9}; // bit 0 .. bit 7
// show one byte: LED i shows bit i
void showByte(byte value) {
for (int i = 0; i < 8; i++) {
digitalWrite(ledPins[i], bitRead(value, i));
}
}
byte pattern = 1; // 00000001
void setup() {
for (int i = 0; i < 8; i++) {
pinMode(ledPins[i], OUTPUT);
}
Serial.begin(9600);
byte a = B11001100;
byte b = B10101010;
Serial.print("a & b = "); Serial.println(a & b, BIN); // 10001000
Serial.print("a | b = "); Serial.println(a | b, BIN); // 11101110
Serial.print("a ^ b = "); Serial.println(a ^ b, BIN); // 1100110
}
void loop() {
showByte(pattern);
Serial.print(pattern);
Serial.print(" = ");
Serial.println(pattern, BIN);
pattern = (pattern << 1) & 0xFF; // shift left, keep 8 bits
if (pattern == 0) {
pattern = 1; // fell off the end: start again
}
delay(300);
}
چرا این درس؟
دورهی تینکرکد فارسی تعاملی است: هر قدم را خودت داخل شبیهساز انجام میدهی — مدار واقعی میچینی، کد واقعی اجرا میکنی و نتیجه را همان لحظه میبینی. این درس روی درسهای قبلی ساخته شده، پس اگر تازه شروع کردهای از درس ۱ بیا!
این درس را رایگان در شبیهساز شروع کن 🎓