fon1

Перевод десятичного числа в двоичную систему.

В мире электроники существуют аналоговые и цифровые схемы. Впрочем, не только в мире электроники. Если немного отвлечься от темы, то признаки "аналогового" и "цифрового" можно найти и в окружающей нас природе. Все что равномерно, непрерывно и легко можно разделить на кусочки любых размеров, - это аналоговое. Но когда появляются неделимые частицы, и оказывается что изучаемый предмет состоит из строгих по размеру "кубиков" - это уже похоже на "цифровой мир".
Вот не очень хороший, но очень наглядный пример: стена построенная из монолитного бетона и кирпичная. В стенах монолитного дома нет каких- то строго размеренных частей, а кирпичная стена состоит из определенного количества "элементарных" кирпичиков. Поэтому, если сделать стену из бетона круглой формы, то она и будет округлой, а вот кирпичная получится вся в ступенечку.
Вот точно так же и в электронике. Если в аналоговой схеме график, например, линейного роста напряжения выглядит как на рисунке 1а, т.е. представлять собой "гладкую" равномерную линию, то при синтезировании этой линии цифровой схемой она получится "ломанный", как бы состоящий из "кирпичиков" (рис.1б).
tsifr elektronika1 Короче говоря, аналоговая величина может принять любое значение, а вот цифровая состоит из элементарных неделимых частиц - нулей и единиц, характеризующие что "есть напряжение" (1) и "нет напряжения" (0). А между ними - резкий скачок без всяких серых непонятностей и полумер.
Выходит, что цифровая техника - это соединение двух крайностей: черное и белое, 1 и 0, есть и нет. Но как же получается, что она создает отличный звук, глубокое изображение с миллионами полутонов? Все очень просто, - размер элементарного "кирпичика" выбран достаточно маленьким. А стена, состоящая из очень большого количества маленьких "кирпичиков" при рассмотрении с некоторого расстояния, выглядит монолитной. Но зато количество и положение этих " кирпичиков" математически строго рассчитано, чтобы показать нам все миллионы полутонов и цветов.
В общем, то что показано на рис.1 является оцифровкой аналоговой величины. Плавно возрастающее напряжение заменяется набором четких ступенек. И чем меньше эти ступеньки, и чем больше их количество, тем качественнее будет результат процесса оцифровки.
К примеру, давайте попробуем сделать перевод в "цифру" процесс заполнения стакана водой.
Сначала зададимся контрольными уровнями воды - пустой и полный. Если меньше половины стакана - пусто, если больше - полно.
Начинаем набирать воду.
Меньше половины (пусто) - "0".
Больше половины (полно) - "1".
Но может выйти явный недолив, так как полным стаканом можно признать на каплю больше половины, а пустым - на каплю меньше половины.
Плохо. Неточно. Нужно увеличить коэффициент дискретизации, т.е. установить больше равных контрольных уровней. Например, "пусто", "одна треть", "две трети", "полный".
Снова набираем воду в четыре этапа.
1) Меньше 1/3 (пустой) - 0, первая часть 0.
2) Больше 1/3 - 0, вторая часть 1.
3) От 1/3 до 2/3 - 1, вторая часть 0.
4) От 2/3 до 3/3 (полный) - 1, вторая часть 1.
Таким образом, что получается:
Пустой стакан = 00, треть = 01, две трети = 10, полный = 11.
Точность стала выше и недолив меньше.
Т.е. мы описали четыре состояния воды в стакане с помощью двух переменных - двух бит, оперируя двухразрядными двоичными числами (00, 01, 10, 11), или двухбитными числами.
Бит - элементарная неделимая частица информации.

Привычная дли человека система счисления, - десятичная. Если вдуматься, то десятичная система не очень удобная. Но это сложилось исторически. Возможно на это повлияло то, что первобытный человек учился считать на собственных пальцах. Для цифровой же технике более удобна двоичная система, в которой либо напряжение есть, либо его нет.
Кроме двоичной и десятичной систем счисления применяются и другие, например: восьмеричная, шестнадцатеричная. Название системы счисления говорит о ее основании, - т.е. количестве значений, которое может принять один разряд (r) числа в данной системе. Для десятичной системы счисления основание равно 10 - от 0 до 9, а в двоичной основание равно двум - 0 или 1.
В десятичной системе после окончания значений одного разряда добавляется следующий старший разряд. В двоичной - то же самое.
Вот как можно сделать перевод из десятичной системы от нуля до 10 в двоичную систему:
0 =0,
1 = 1 - добавляем еще разряд (r),
2 = 10,
3 = 11 - добавляем еще r,
4 = 100,
5 = 101.
6 = 110,
7 = 111 - добавляем еще r,
8 = 1000,
9 = 1001,
10 = 1010.
Таким образом для счета до 10 необходимо четыре бита. Теперь запишем это правильно:
0 = 0000
1 = 0001
2 = 0010
3 = 0011
4 = 0100
5 = 0101
6 = 0110
7 = 0111
8 = 1000
9 = 1001
10 = 1010
Можно продолжить до исчерпания четвертого r:
11 = 1011
12 = 1100
13 = 1101
14 = 1110
15 =1111
Обратите внимание на то что новый r появляется каждый раз после удвоения значения предыдущего:
1 = 1,
2 = 10,
4 = 100,
8 = 1000,
16 = 10000,
32 = 100000,
64 = 1000000 и т.д.
То есть:
1 = 20 = 1
2 = 21 = 10
4 = 22 = 100
8 = 23 = 1000
16 = 24 = 10000
32 = 25 = 10000
64 = 26 = 1000000.
Возьмем к примеру любое произвольное десятичное число, например, 122:
122 = 1·102 + 2·101 + 2·100.
Мы умножили значение каждого r на основание десятичной системы счисления, возведенное в степень, равную номеру r (номер младшего разряда "0").
Таким образом,
0 r = 2,
1 r = 20,
2 r = 100.
А теперь представим его в виде суммы значений 1·2N (думаю понятно, что 1 можно отбросить, и оно будет 2N), где N - номер i двоичного числа, начиная с нулевого r:
122 = 26 + 25 + 243 + 22 + 21
или, если не хочется возиться со степенями:
122 = 64+32+16+8+2
Самое старшее число было 64, т.е. 26, значит r в двоичном числе будет 6 + 1 = 7.
Запишем в столбик:
1000000 (64)
0100000 (32)
0010000 (16)
0001000 (8)
0000010 (2)
суммируем:
1111010 (122)
Таким образом, при переводе десятичное 122 в двоичной системе выглядит так: 1111010.

А теперь попробуем выполнить обратное действие, и осуществим перевод двоичного числа 1111010 в десятичное.
Мы видим что в числе семь r. Так как разряды считаются с нулевого, а не с первого, то значение степени N старшего r будет 7 - 1 = 6.
tsifr elektronika1a Возникает вопрос: как перевод из десятичной в двоичную систему быстро делать практически в уме, или хотя бы на обычном калькуляторе? Ведь на простом "бытовом" калькуляторе довольно сложно возводить что-либо в N-ю степень.
К примеру, нам нужно сделать перевод десятичного числа 147 в двоичную систему. Берем калькулятор, и начинаем умножать:
1, (1 разряд)
1·2 = 2, (2)
2·2 = 4, (3)
4·2 = 8, (4)
8·2 = 16, (5)
16·2 = 32, (6)
32·2 = 64, (7)
64·2 = 128, (8)
- стоп, 128 - самое большое число близкое к 147. Чтобы достигнуть 128-и мы сделали 8 действий. Значит r = 8.
Действуем дальше:
147 - 128 = 19; один раз из 147 вычитаем 128 - значит единица в 8-м r.
Осталось 19 - 16 = 3; один раз из 19 вычитаем 16, еще есть единица в 5-м r. Осталось 3 - 2 = 1, один раз из 3 вычитаем 2, то есть единица во 2-м r. Осталось 1 - 1 = 0. Единица в 1-м r. Во всех остальных r = 0.
При переводе в двоичную систему получилось - 10010011

Чтобы еще больше упростить себе жизнь при переводе рисуем таблицу:
tsifr elektronika01 в которой записываем единицы в клетках тех r, где делали вычитания. В оставшие пустые клетки записываем нули.
Например: 147 - 128 = 19
tsifr elektronika02 19 - 16 = 3
tsifr elektronika03 3 - 2 = 1
tsifr elektronika04 1 - 1 = 0
tsifr elektronika05 Соответственно можно делать и обратное действие, - перевод двоичную систему в десятичную. Записываете двоичное число в эту таблицу и суммируете десятичные числа в клетках в которых единицы: 128 + 16 + 2 + 1 = 147.

Андреев С.

РК 2012/07

<< Предыдущая Cледующая >>

Вверх

radionet