Поскольку значение, которое вы записываете в регистр, представляет собой двоичную битовую маску, бит которой равен одному, что означает «это выход». Вы не пишете «количество выходов, которое я хотел бы иметь», вы одновременно устанавливаете 8 отдельных флагов.
Число 7 в двоичном виде - 00000111
, поэтому у него самые младшие три бита установлены в 1, что здесь, по-видимому, означает «это выход». Десятичное значение 3, с другой стороны, составляет просто 00000011
в двоичном виде, поэтому в нем установлены только два бита, равный 1, что, очевидно, слишком мало.
Биты индексируются справа, начиная с 0. Десятичное значение номера бита n равно 2 n . Десятичное значение двоичного числа с более чем одним установленным битом является просто суммой всех значений всех установленных битов.
Так, например, десятичное значение числа с установленными битами 0, 1 и 2 составляет 2 0 + 2 1 + 2 2 = 1 + 2 + 4 = 7.
Вот потрясающая таблица ASCII, показывающая 8 бит байта и их отдельные значения:
+---+---+---+---+---+---+---+---+
index | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
+---+---+---+---+---+---+---+---+
value |128| 64| 32| 16| 8 | 4 | 2 | 1 |
+---+---+---+---+---+---+---+---+