
В середине 80-х одним из моих увлечений была аналоговая и цифровая электроника. Я решил спроектировать и построить цифровые часы с семисегментными десятичными цифрами. Вскоре я понял, что можно сократить бюджет и упростить конструкцию, сделав часы на бинарных числах, без необходимости использовать преобразователи двоичного кода в семисегментный. Основная идея заключалась в том, чтобы представлять единицы и десятки часов, минут и секунд отдельными числами максимум из 4 битов. Это были бы обычные цифровые часы, но показания считывались бы непосредственно с двоичного числа, а не с десятичного.
Представим себе цифровые часы с десятичными числами в таком формате:
десятки единицы (часы)
десятки единицы (минуты)
десятки единицы (секунды)
Например:
1 9 часов
2 1 минута
5 3 секунды
Если представить каждую десятичную цифру 4-битным двоичным числом, часы будут выглядеть так:
0001 1001 часов
0010 0001 минут
0101 0011 секунд
Нужно лишь запомнить двоичные числа от 0 до 9, представленные четырьмя битами:
0000 = 0
0001 = 1
0010 = 2
0011 = 3
0100 = 4
0101 = 5
0110 = 6
0111 = 7
1000 = 8
1001 = 9
Можно просто запомнить эти 10 символов, как мы запоминаем 10 десятичных цифр, или применить следующее правило преобразования:
Назовём битом каждый двоичный знак, который может быть «1» или «0». Биты обычно упорядочиваются и читаются справа налево, с присвоением следующих числовых значений (или двоичных весов) в зависимости от позиции: 1,2,4,8,... всегда удваивая. Чтобы преобразовать двоичное число в его десятичный эквивалент, умножьте вес каждого бита на его значение и сложите результат.
Пример 1: 0 0 1 1
0*8+0*4+1*2+1*1=3
Пример 2: 1 0 0 1
1*8+0*4+0*2+1*1=9
В общем: d c b a
d*8+c*4+b*2+a*1
При чтении справа налево веса для 4-битного двоичного числа: 2^3 2^2 2^1 2^0
Для более общего N-битного числа веса: 2^(N-1) 2^(N-2) ..... 2^1 2^0
Но для наших часов достаточно знать числа до 4 битов.
БЦЧ состоит из 4 горизонтальных рядов по восемь светодиодов. Каждый светодиод представляет бит. Если светодиод горит, считаем, что он указывает «1», если не горит — «0». В каждом ряду два 4-битных двоичных числа. Четыре правых светодиода обозначают единицы, а четыре левых — десятки. Верхний ряд показывает часы (от 00 до 23), следующий — минуты (от 00 до 59), следующий — секунды (от 00 до 59), а самый нижний — сотые доли секунды (от 00 до 99).
Для ещё более лёгкого чтения светодиоды имеют цвета со следующими кодами:
красный соответствует самому правому разряду с весом 1
зелёный соответствует следующему слева с весом 2
жёлтый соответствует следующему слева с весом 4
синий соответствует следующему слева с весом 8
Таким образом, просто глядя на цвета, мы можем узнать число, складывая цвета в двоичном числе.
Конечно, для чтения бинарных часов не нужно даже уметь складывать! Достаточно запомнить 10 двоичных знаков или комбинаций цветов, соответствующих десятичным цифрам от 0 до 9.
Красный всегда означает 1,
зелёный всегда означает 2,
жёлтый всегда означает 4,
синий всегда означает 8,
красный и зелёный всегда означают 1+2=3,
зелёный и жёлтый всегда означают 2+4=6,
и так далее... Приведём пример:
• • • •
• • • •
= 2 3 часа
• • • •
• • • •
= 5 6 минут
• • • •
• • • •
= 3 9 секунд
• • • •
• • • •
= 9 7 сотых
Напоминание:
• • • • = 0
• • • • = 1
• • • • = 2
• • • • = 3
• • • • = 4
• • • • = 5
• • • • = 6
• • • • = 7
• • • • = 8
• • • • = 9
Это просто! :)