Я создал следующий простой эскиз для моего Arduino Due (работает 1.6.1) с помощью оператора по модулю:Это ошибка в Arduino modulo или это я?
int count = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.print("Count: ");
Serial.println(count);
Serial.print("Count/4 = ");
Serial.println(count/4);
Serial.print("Remainder = ");
Serial.println(count & 4);
Serial.println();
count++;
if (count == 50) {
delay(86400000);
} else {
delay(1000);
}
}
Выход выглядит следующим образом:
Count: 0
Count/4 = 0
Remainder = 0
Count: 1
Count/4 = 0
Remainder = 0
Count: 2
Count/4 = 0
Remainder = 0
Count: 3
Count/4 = 0
Remainder = 0
Count: 4
Count/4 = 1
Remainder = 4
Count: 5
Count/4 = 1
Remainder = 4
Count: 6
Count/4 = 1
Remainder = 4
Count: 7
Count/4 = 1
Remainder = 4
Count: 8
Count/4 = 2
Remainder = 0
Count: 9
Count/4 = 2
Remainder = 0
Count: 10
Count/4 = 2
Remainder = 0
Count: 11
Count/4 = 2
Remainder = 0
Count: 12
Count/4 = 3
Remainder = 4
Count: 13
Count/4 = 3
Remainder = 4
Count: 14
Count/4 = 3
Remainder = 4
Count: 15
Count/4 = 3
Remainder = 4
Count: 16
Count/4 = 4
Remainder = 0
Мое ожидание было бы, что до конца значение будет отсчитываться от 0 до 3 снова и снова. Вместо этого он чередуется между 0 в четыре раза и 4 в четыре раза.
Я полностью открыт идее, что я что-то делаю неправильно, но я не могу понять, что это такое.
'&' не по модулю. '%' есть. '&' побитовое и. – hobbs
@hobbs, вы должны сделать ответ, потому что это ответ на проблему. – Asheliahut
@Geohut не собирается беспокоиться, потому что я проголосую за закрытие типографской ошибки. – hobbs