Как расшифровать двоичный. Почему двоичное кодирование является универсальным? Методы программирования
Компьютер обрабатывает большое количество информации. Аудиофайлы, картинки, тексты - все это необходимо воспроизвести или вывести на экран. Почему двоичное кодирование является универсальным методом программирования информации любого технического оборудования?
Чем отличается кодирование от шифрования?
Зачастую люди отождествляют понятия "кодирование" и "шифрование", когда на самом деле они имеют разный смысл. Так, шифрованием называют процесс преобразования информации с целью ее сокрытия. Расшифровать зачастую может сам человек, который изменил текст, или специально обученные люди. Кодирование же применяется для обработки информации и упрощения работы с ней. Обычно используется общая таблица кодировки, знакомая всем. Она же встроена в компьютер.
Принцип двоичного кодирования
Двоичное кодирование основывается на использовании всего лишь двух символов - 0 и 1 - для обработки информации, используемой различными устройствами. Эти знаки назвали двоичными цифрами, на английском - binary digit, или bit. Каждый из символов двоичного кода занимает память компьютера в 1 бит. Почему двоичное кодирование является универсальным методом обработки информации? Дело в том, что компьютеру легче обрабатывать меньшее количество символов. От этого напрямую зависит и продуктивность работы ПК: чем меньше функциональных задач нужно выполнить устройству, тем выше скорость и качество работы.
Принцип двоичного кодирования встречается не только в программировании. С помощью чередования глухих и звонких ударов барабана жители Полинезии передавали информацию друг другу. Сходный принцип применяется и в где для передачи сообщения используются длинные и короткие звуки. «Телеграфная азбука» используется и сегодня.
Где используется двоичное кодирование?
Двоичное кодирование информации в компьютере используется повсеместно. Каждый файл, будь то музыка или текст, должен быть запрограммирован, чтобы в последующем он мог быть легко обработан и прочитан. Система двоичного кодирования полезна для работы с символами и числами, аудиофайлами, графикой.
Двоичное кодирование чисел
Сейчас в компьютерах числа представлены в закодированном виде, непонятном для обычного человека. Использование арабских цифр так, как мы себе представляем, для техники нерационально. Причиной тому является необходимость присваивать каждому числу свою неповторимый символ, что сделать порой невозможно.
Существуют две системы счисления: позиционная и непозиционная. Непозиционная система основана на использовании латинских букв и знакома нам в виде греческих цифр. Такой способ записи достаточно сложен для понимания, поэтому от него отказались.
Позиционная система счисления используется и сегодня. Сюда входит двоичное, десятичное, восьмеричное и даже шестнадцатеричное кодирование информации.
Десятичной системой кодирования мы пользуемся в быту. Это привычные для нас которые понятны каждому человеку. Двоичное кодирование чисел отличается использованием только нуля и единицы.
Целые числа переводятся в двоичную систему кодирования путем деления их на 2. Полученные частные также поэтапно делятся на 2, пока не получится в итоге 0 или 1. Например, число 123 10 в двоичной системе может быть представлено в виде 1111011 2 . А число 20 10 будет выглядеть как 10100 2 .
Индексы 10 и 2 обозначаются, соответственно, десятичную и двоичную систему кодирования чисел. Символ двоичного кодирования используется для упрощения работы со значениями, представленными в разных системах счисления.
Методы программирования десятичных чисел основаны на “плавающей запятой”. Для того чтобы правильно перевести значение из десятичной в двоичную систему кодирования, используют формулу N = M х qp. М - это мантисса (выражение числа без какого-либо порядка), p - это порядок значения N, а q - основание системы кодирование (в нашем случае 2).
Не все числа являются положительными. Для того чтобы различить положительные и отрицательные числа, компьютер оставляет место в 1 бит для кодирования знака. Здесь ноль представляет знак плюс, а единица - минус.
Использование такой системы счисления упрощает для компьютера работу с числами. Вот почему двоичное кодирование является универсальным при вычислительных процессах.
Двоичное кодирование текстовой информации
Каждый символ алфавита кодируется своим набором нулей и единиц. Текст состоит из разных символов: букв (прописных и строчных), арифметических знаков и других различных значений. Кодирование текстовой информации требует использования 8 последовательных двоичных значений от 00000000 до 11111111. Таким образом можно преобразовать 256 различных символов.
Чтобы не было путаницы в кодировании текста, используются специальных таблицы значений для каждого символа. В них присутствует латинский алфавит, арифметические знаки и знаки особого назначения (например, €, ¥, и другие). Символы промежутка 128-255 кодируют национальный алфавит страны.
Для кодирования 1 символа требуется 8 бит памяти. Для упрощения подстчетов 8 бит приравниваются к 1 байту, поэтому общее место на диске для текстовой информации измеряется в байтах.
Большинство персональных компьютеров оснащены стандартной таблицей (American Standard Code for Information Interchange). Также используются другие таблицы, в которых система кодирования текстовой информации отличается. К примеру, первая известная кодировка символов называется КОИ-8 (код обмена информацией 8-битный), и работает она на компьютерах с ОС UNIX. Также широко встречается таблица кодов СР1251, которая была создана для операционной системы Windows.
Двоичное кодирование звуков
Еще одна причина, почему двоичное кодирование является универсальным методом программирования информации, - это его простота при работе с аудиофайлами. Любая музыка представляет собой звуковые волны разной амплитуды и частоты колебания. От этих параметров зависит громкость звука и его высота тона.
Чтобы запрограммировать звуковую волну, компьютер делит ее условно на несколько частей, или «выборок». Число таких выборок может быть большим, поэтому существует 65536 различных комбинаций нулей и единиц. Соответственно, современные компьютеры оснащены 16-битными звуковыми картами, что означает использование 16 двоичных цифр для кодирования одной выборки звуковой волны.
Чтобы воспроизвести аудиофайл, компьютер обрабатывает запрограммированные последовательности двоичного кода и соединяет их в одну непрерывную волну.
Кодирование графики
Графическая информация может быть представлена в виде рисунков, схем, картинок или слайдов в PowerPoint. Любая картинка состоит из мелких точек - пикселей, которые могут быть окрашены в разный цвет. Цвет каждого пикселя кодируется и сохраняется, и в итоге мы получаем полноценное изображение.
Если картинка черно-белая, код каждого пикселя может быть либо единицей, либо нулем. Если используется 4 цвета, то код каждого из них состоит из двух цифр: 00, 01, 10 или 11. По этому принципу различают качество обработки любого изображения. Увеличение или уменьшение яркости также влияет на количество используемых цветов. В лучшем случае компьютер различает около 16 777 216 оттенков.
Заключение
Существуют разные информации, среди которых двоичное кодирование является наиболее эффективным. Всего лишь с помощью двух символов - 1 и 0 - компьютер легко прочитывает большинство файлов. При этом скорость обработки намного выше, нежели использовалась бы, например, десятичная система программирования. Простота этого метода делает его незаменимым для любой техники. Вот почему двоичное кодирование является универсальным среди своих аналогов.
Все символы и буквы могут быть закодированы при помощи восьми двоичных бит. Наиболее распространенными таблицами представления букв в двоичном коде являются ASCII и ANSI, их можно использовать для записи текстов в микропроцессорах. В таблицах ASCII и ANSI первые 128 символов совпадают. В этой части таблицы содержатся коды цифр, знаков препинания, латинские буквы верхнего и нижнего регистров и управляющие символы. Национальные расширения символьных таблиц и символы псевдографики содержатся в последних 128 кодах этих таблиц, поэтому русские тексты в операционных системах DOS и WINDOWS не совпадают.
При первом знакомстве с компьютерами и микропроцессорами может возникнуть вопрос — "как преобразовать текст в двоичный код?" Однако это преобразование является наиболее простым действием! Для этого нужно воспользоваться любым текстовым редактором. В том числе подойдет и простейшая программа notepad, входящая в состав операционной системы Windows. Подобные же редакторы присутствуют во всех средах программирования для языков, таких как СИ, Паскаль или Ява. Следует отметить, что наиболее распространенный текстовый редактор Word для простого преобразования текста в двоичный код не подходит. Этот тестовый редактор вводит огромное количество дополнительной информации, такой как цвет букв, наклон, подчеркивание, язык, на котором написана конкретная фраза, шрифт.
Следует отметить, что на самом деле комбинация нулей и единиц, при помощи которых кодируется текстовая информация двоичным кодом не является, т.к. биты в этом коде не подчиняются законам . Однако в Интернете поисковая фраза "представление букв в двоичном коде" является самой распространенной. В таблице 1 приведено соответствие двоичных кодов буквам латинского алфавита. Для краткости записи в этой таблице последовательность нулей и единиц представлена в десятичном и шестнадцатеричном кодах.
Таблица 1 Таблица представления латинских букв в двоичном коде (ASCII)
Десятичный код | Шестнадцатеричный код | Отображаемый символ | Значение |
---|---|---|---|
0 | 00 | NUL | |
1 | 01 | ☺ | (слово управления дисплеем) |
2 | 02 | ☻ | (Первое передаваемое слово) |
3 | 03 | ETX (Последнее слово передачи) | |
4 | 04 | ♦ | EOT (конец передачи) |
5 | 05 | ♣ | ENQ (инициализация) |
6 | 06 | ♠ | ACK (подтверждение приема) |
7 | 07 | BEL | |
8 | 08 | ◘ | BS |
9 | 09 | ○ | HT (горизонтальная табуляция |
10 | 0A | ◙ | LF (перевод строки) |
11 | 0B | ♂ | VT (вертикальная табуляция) |
12 | 0С | ♀ | FF (следующая страница) |
13 | 0D | ♪ | CR (возврат каретки) |
14 | 0E | ♫ | SO (двойная ширина) |
15 | 0F | ☼ | SI (уплотненная печать) |
16 | 10 | DLE | |
17 | 11 | ◄ | DC1 |
18 | 12 | ↕ | DC2 (отмена уплотненной печати) |
19 | 13 | ‼ | DC3 (готовность) |
20 | 14 | ¶ | DC4 (отмена двойной ширины) |
21 | 15 | § | NAC (неподтверждение приема) |
22 | 16 | ▬ | SYN |
23 | 17 | ↨ | ETB |
24 | 18 | CAN | |
25 | 19 | ↓ | EM |
26 | 1A | → | SUB |
27 | 1B | ← | ESC (начало управл. послед.) |
28 | 1C | ∟ | FS |
29 | 1D | ↔ | GS |
30 | 1E | ▲ | RS |
31 | 1F | ▼ | US |
32 | 20 | Пробел | |
33 | 21 | ! | Восклицательный знак |
34 | 22 | « | Угловая скобка |
35 | 23 | # | Знак номера |
36 | 24 | $ | Знак денежной единицы (доллар) |
37 | 25 | % | Знак процента |
38 | 26 | & | Амперсанд |
39 | 27 | " | Апостроф |
40 | 28 | ( | Открывающая скобка |
41 | 29 | ) | Закрывающая скобка |
42 | 2A | * | Звездочка |
43 | 2B | + | Знак плюс |
44 | 2C | , | Запятая |
45 | 2D | - | Знак минус |
46 | 2E | . | Точка |
47 | 2F | / | Дробная черта |
48 | 30 | 0 | Цифра ноль |
49 | 31 | 1 | Цифра один |
50 | 32 | 2 | Цифра два |
51 | 33 | 3 | Цифра три |
52 | 34 | 4 | Цифра четыре |
53 | 35 | 5 | Цифра пять |
54 | 36 | 6 | Цифра шесть |
55 | 37 | 7 | Цифра семь |
56 | 38 | 8 | Цифра восемь |
57 | 39 | 9 | Цифра девять |
58 | 3A | : | Двоеточие |
59 | 3B | ; | Точка с запятой |
60 | 3C | < | Знак меньше |
61 | 3D | = | Знак равно |
62 | 3E | > | Знак больше |
63 | 3F | ? | Знак вопрос |
64 | 40 | @ | Коммерческое эт |
65 | 41 | A | Прописная латинская буква А |
66 | 42 | B | Прописная латинская буква B |
67 | 43 | C | Прописная латинская буква C |
68 | 44 | D | Прописная латинская буква D |
69 | 45 | E | Прописная латинская буква E |
70 | 46 | F | Прописная латинская буква F |
71 | 47 | G | Прописная латинская буква G |
72 | 48 | H | Прописная латинская буква H |
73 | 49 | I | Прописная латинская буква I |
74 | 4A | J | Прописная латинская буква J |
75 | 4B | K | Прописная латинская буква K |
76 | 4C | L | Прописная латинская буква L |
77 | 4D | M | Прописная латинская буква |
78 | 4E | N | Прописная латинская буква N |
79 | 4F | O | Прописная латинская буква O |
80 | 50 | P | Прописная латинская буква P |
81 | 51 | Q | Прописная латинская буква |
82 | 52 | R | Прописная латинская буква R |
83 | 53 | S | Прописная латинская буква S |
84 | 54 | T | Прописная латинская буква T |
85 | 55 | U | Прописная латинская буква U |
86 | 56 | V | Прописная латинская буква V |
87 | 57 | W | Прописная латинская буква W |
88 | 58 | X | Прописная латинская буква X |
89 | 59 | Y | Прописная латинская буква Y |
90 | 5A | Z | Прописная латинская буква Z |
91 | 5B | [ | Открывающая квадратная скобка |
92 | 5C | \ | Обратная черта |
93 | 5D | ] | Закрывающая квадратная скобка |
94 | 5E | ^ | "Крышечка" |
95 | 5 | _ | Символ подчеркивания |
96 | 60 | ` | Апостроф |
97 | 61 | a | Строчная латинская буква a |
98 | 62 | b | Строчная латинская буква b |
99 | 63 | c | Строчная латинская буква c |
100 | 64 | d | Строчная латинская буква d |
101 | 65 | e | Строчная латинская буква e |
102 | 66 | f | Строчная латинская буква f |
103 | 67 | g | Строчная латинская буква g |
104 | 68 | h | Строчная латинская буква h |
105 | 69 | i | Строчная латинская буква i |
106 | 6A | j | Строчная латинская буква j |
107 | 6B | k | Строчная латинская буква k |
108 | 6C | l | Строчная латинская буква l |
109 | 6D | m | Строчная латинская буква m |
110 | 6E | n | Строчная латинская буква n |
111 | 6F | o | Строчная латинская буква o |
112 | 70 | p | Строчная латинская буква p |
113 | 71 | q | Строчная латинская буква q |
114 | 72 | r | Строчная латинская буква r |
115 | 73 | s | Строчная латинская буква s |
116 | 74 | t | Строчная латинская буква t |
117 | 75 | u | Строчная латинская буква u |
118 | 76 | v | Строчная латинская буква v |
119 | 77 | w | Строчная латинская буква w |
120 | 78 | x | Строчная латинская буква x |
121 | 79 | y | Строчная латинская буква y |
122 | 7A | z | Строчная латинская буква z |
123 | 7B | { | Открывающая фигурная скобка |
124 | 7С | | | Вертикальная черта |
125 | 7D | } | Закрывающая фигурная скобка |
126 | 7E | ~ | Тильда |
127 | 7F | ⌂ |
В классическом варианте таблицы символов ASCII нет русских букв и она состоит из 7 бит. Однако в дальнейшем эта таблица была расширена до 8 бит и в старших 128 строках появились русские буквы в двоичном коде и символы псевдографики. В общем случае во второй части размещены национальные алфавиты разных стран и русские буквы там просто один из возможных наборов (855) там может быть французская (863), немецкая (1141) или греческая (737) таблица. В таблице 2 приведен пример представления русских букв в двоичном коде.
Таблица 2. Таблица представления русских букв в двоичном коде (ASCII)
Десятичный код | Шестнадцатеричный код | Отображаемый символ | Значение |
---|---|---|---|
128 | 80 | А | Прописная русская буква А |
129 | 81 | Б | Прописная русская буква Б |
130 | 82 | В | Прописная русская буква В |
131 | 83 | Г | Прописная русская буква Г |
132 | 84 | Д | Прописная русская буква Д |
133 | 85 | Е | Прописная русская буква Е |
134 | 86 | Ж | Прописная русская буква Ж |
135 | 87 | З | Прописная русская буква З |
136 | 88 | И | Прописная русская буква И |
137 | 89 | Й | Прописная русская буква Й |
138 | 8A | К | Прописная русская буква К |
139 | 8B | Л | Прописная русская буква Л |
140 | 8C | М | Прописная русская буква М |
141 | 8D | Н | Прописная русская буква Н |
142 | 8E | О | Прописная русская буква О |
143 | 8F | П | Прописная русская буква П |
144 | 90 | Р | Прописная русская буква Р |
145 | 91 | С | Прописная русская буква С |
146 | 92 | Т | Прописная русская буква Т |
147 | 93 | У | Прописная русская буква У |
148 | 94 | Ф | Прописная русская буква Ф |
149 | 95 | Х | Прописная русская буква Х |
150 | 96 | Ц | Прописная русская буква Ц |
151 | 97 | Ч | Прописная русская буква Ч |
152 | 98 | Ш | Прописная русская буква Ш |
153 | 99 | Щ | Прописная русская буква Щ |
154 | 9A | Ъ | Прописная русская буква Ъ |
155 | 9B | Ы | Прописная русская буква Ы |
156 | 9C | Ь | Прописная русская буква Ь |
157 | 9D | Э | Прописная русская буква Э |
158 | 9E | Ю | Прописная русская буква Ю |
159 | 9F | Я | Прописная русская буква Я |
160 | A0 | а | Строчная русская буква а |
161 | A1 | б | Строчная русская буква б |
162 | A2 | в | Строчная русская буква в |
163 | A3 | г | Строчная русская буква г |
164 | A4 | д | Строчная русская буква д |
165 | A5 | е | Строчная русская буква е |
166 | A6 | ж | Строчная русская буква ж |
167 | A7 | з | Строчная русская буква з |
168 | A8 | и | Строчная русская буква и |
169 | A9 | й | Строчная русская буква й |
170 | AA | к | Строчная русская буква к |
171 | AB | л | Строчная русская буква л |
172 | AC | м | Строчная русская буква м |
173 | AD | н | Строчная русская буква н |
174 | AE | о | Строчная русская буква о |
175 | AF | п | Строчная русская буква п |
176 | B0 | ░ | |
177 | B1 | ▒ | |
178 | B2 | ▓ | |
179 | B3 | │ | Символ псевдографики |
180 | B4 | ┤ | Символ псевдографики |
181 | B5 | ╡ | Символ псевдографики |
182 | B6 | ╢ | Символ псевдографики |
183 | B7 | ╖ | Символ псевдографики |
184 | B8 | ╕ | Символ псевдографики |
185 | B9 | ╣ | Символ псевдографики |
186 | BA | ║ | Символ псевдографики |
187 | BB | ╗ | Символ псевдографики |
188 | BC | ╝ | Символ псевдографики |
189 | BD | ╜ | Символ псевдографики |
190 | BE | ╛ | Символ псевдографики |
191 | BF | ┐ | Символ псевдографики |
192 | C0 | └ | Символ псевдографики |
193 | C1 | ┴ | Символ псевдографики |
194 | C2 | ┬ | Символ псевдографики |
195 | C3 | ├ | Символ псевдографики |
196 | C4 | ─ | Символ псевдографики |
197 | C5 | ┼ | Символ псевдографики |
198 | C6 | ╞ | Символ псевдографики |
199 | C7 | ╟ | Символ псевдографики |
200 | C8 | ╚ | Символ псевдографики |
201 | C9 | ╔ | Символ псевдографики |
202 | CA | ╩ | Символ псевдографики |
203 | CB | ╦ | Символ псевдографики |
204 | CC | ╠ | Символ псевдографики |
205 | CD | ═ | Символ псевдографики |
206 | CE | ╬ | Символ псевдографики |
207 | CF | ╧ | Символ псевдографики |
208 | D0 | ╨ | Символ псевдографики |
209 | D1 | ╤ | Символ псевдографики |
210 | D2 | ╥ | Символ псевдографики |
211 | D3 | ╙ | Символ псевдографики |
212 | D4 | ╘ | Символ псевдографики |
213 | D5 | ╒ | Символ псевдографики |
214 | D6 | ╓ | Символ псевдографики |
215 | D7 | ╫ | Символ псевдографики |
216 | D8 | ╪ | Символ псевдографики |
217 | D9 | ┘ | Символ псевдографики |
218 | DA | ┌ | Символ псевдографики |
219 | DB | █ | |
220 | DC | ▄ | |
221 | DD | ▌ | |
222 | DE | ▐ | |
223 | DF | ▀ | |
224 | E0 | р | Строчная русская буква р |
225 | E1 | с | Строчная русская буква с |
226 | E2 | т | Строчная русская буква т |
227 | E3 | у | Строчная русская буква у |
228 | E4 | ф | Строчная русская буква ф |
229 | E5 | х | Строчная русская буква х |
230 | E6 | ц | Строчная русская буква ц |
231 | E7 | ч | Строчная русская буква ч |
232 | E8 | ш | Строчная русская буква ш |
233 | E9 | щ | Строчная русская буква щ |
234 | EA | ъ | Строчная русская буква ъ |
235 | EB | ы | Строчная русская буква ы |
236 | EC | ь | Строчная русская буква ь |
237 | ED | э | Строчная русская буква э |
238 | EE | ю | Строчная русская буква ю |
239 | EF | я | Строчная русская буква я |
240 | F0 | Ё | Прописная русская буква Ё |
241 | F1 | ё | Строчная русская буква ё |
242 | F2 | Є | |
243 | F3 | є | |
244 | F4 | Ї | |
245 | F5 | Ї | |
246 | F6 | Ў | |
247 | F7 | ў | |
248 | F8 | ° | Знак градуса |
249 | F9 | ∙ | Знак умножения (точка) |
250 | FA | · | |
251 | FB | √ | Радикал (взятие корня) |
252 | FC | № | Знак номера |
253 | FD | ¤ | Знак денежной единицы (рубль) |
254 | FE | ■ | |
255 | FF |
При записи текстов кроме двоичных кодов, непосредственно отображающих буквы, применяются коды, обозначающие переход на новую строку и возврат курсора (возврат каретки) на нулевую позицию строки. Эти символы обычно применяются вместе. Их двоичные коды соответствуют десятичным числам — 10 (0A) и 13 (0D). В качестве примера ниже приведен участок текста данной страницы (дамп памяти). На этом участке записан ее первый абзац. Для отображения информации в дампе памяти применен следующий формат:
- в первой колонке записан двоичный адрес первого байта строки
- в следующи шестнадцати колонках записаны байты, содержащиеся в текстовом файле. Для более удобного определения номера байта после восьмой колонки проведена вертикальная линия. Байты, для краткости записи, представлены в шестнадцатеричном коде.
- в последней колонке эти же байты представлены в виде отображаемых буквенных символов
В приведенном примере видно, что первая строка текста занимает 80 байт. Первый байт 82 соответствует букве "В". Второй байт E1 соответствует букве "с". Третий байт A5 соответствует букве "е". Следующий байт 20 отображает пустой промежуток между словами (пробел) " ". 81 и 82 байты содержат символы возврата каретки и перевода строки 0D 0A. Эти символы мы находим по двоичному адресу 00000050: Следующая строка исходного текста не кратна 16 (ее длина равна 76 буквам), поэтому для того, чтобы найти ее конец потребуется сначала найти строку 000000E0: и от нее отсчитать девять колонок. Там снова записаны байты возврата каретки и перевода строки 0D 0A. Остальной текст анализируется точно таким же образом.
Дата последнего обновления файла 04.12.2018
Литература:
Вместе со статьей "Запись текстов двоичным кодом" читают:
Представление двоичных чисел в памяти компьютера или
микроконтроллера
http://сайт/proc/IntCod.php
Иногда бывает удобно хранить числа в памяти процессора в десятичном
виде
http://сайт/proc/DecCod.php
Стандартные форматы чисел
с плавающей запятой для компьютеров и микроконтроллеров
http://сайт/proc/float/
В настоящее время и в технике и в быту широко используются как
позиционные, так и непозиционные системы счисления.
.php
Двоичный код представляет собой форму записи информации в виде единиц и нулей. Такая является позиционной с основанием 2. На сегодняшний день двоичный код (таблица, представленная немного ниже, содержит некоторые примеры записи чисел) используется во всех без исключения цифровых устройствах. Его популярность объясняется высокой надежность и простотой данной формы записи. Двоичная арифметика весьма проста, соответственно, ее легко реализовать и на аппаратном уровне. компоненты (или как их еще называют - логические) весьма надежны, так как они оперируют в работе всего двумя состояниями: логической единицы (есть ток) и логического нуля (нет тока). Тем самым они выгодно отличаются от аналоговых компонентов, работа которых основана на переходных процессах.
Как составляется двоичная форма записи?
Давайте разберемся, каким образом формируется такой ключ. Один разряд двоичного кода может содержать всего два состояния: ноль и единицу (0 и 1). При использовании двух разрядов появляется возможность записать четыре значения: 00, 01, 10, 11. Трехразрядная запись содержит восемь состояний: 000, 001 … 110, 111. В результате получаем, что длина двоичного кода зависит от числа разрядов. Это выражение можно записать с помощью следующей формулы: N =2m, где: m - это количество разрядов, а N - число комбинаций.
Виды двоичных кодов
В микропроцессорах такие ключи применяются для записи разнообразной обрабатываемой информации. Разрядность двоичного кода может существенно превышать и его встроенной памяти. В таких случаях длинные числа занимают несколько ячеек запоминающего устройства и обрабатываются с помощью нескольких команд. При этом все сектора памяти, которые выделены под многобайтный двоичный код, рассматриваются в качестве одного числа.
В зависимости от необходимости предоставления той или иной информации, различают следующие виды ключей:
- беззнаковые;
- прямые целыезнаковые коды;
- знаковые обратные;
- знаковые дополнительные;
- код Грея;
- код Грея-Экспресс.;
- дробные коды.
Рассмотрим более детально каждый из них.
Беззнаковый двоичный код
Давайте разберемся, что же представляет собой такой вид записи. В целых беззнаковых кодах каждый разряд (двоичный) представляет степень цифры два. При этом наименьшее число, которое можно записать в такой форме, равно нулю, а максимальное можно представить следующей формулой: М=2 п -1. Эти два числа полностью определяют диапазон ключа, которым можно выразить такой двоичный код. Давайте рассмотрим возможности упомянутой формы записи. При использовании данного вида беззнакового ключа, состоящего из восьми разрядов, диапазон возможных чисел составит от 0 до 255. Шестнадцатиразрядный код будет иметь диапазон от 0 до 65535. В восьмиразрядных процессорах для хранения и записи таких чисел используют два сектора памяти, которые располагаются в соседних адресатах. Работу с такими ключами обеспечивают специальные команды.
Прямые целые знаковые коды
В данном виде двоичных ключей старший разряд используется для записи знака числа. Нуль соответствует плюсу, а единица - минусу. В результате введения данного разряда диапазон закодированных чисел смещается в отрицательную сторону. Получается, что восьмиразрядный знаковый целый двоичный ключ может записать числа в диапазоне от -127 до +127. Шестнадцатиразрядный - в диапазоне от -32767 до +32767. В восьмиразрядных микропроцессорах для хранения подобных кодов используют два соседних сектора.
Недостатком такой формы записи является то, что знаковые и цифровые разряды ключа необходимо обрабатывать раздельно. Алгоритмы программ, работающих с этими кодами, получаются очень сложными. Для изменения и выделения знаковых разрядов необходимо применять механизмы маскировки этого символа, что способствует резкому увеличению размеров программного обеспечения и уменьшению его быстродействия. С целью устранения данного недостатка был введен новый вид ключа - обратный двоичный код.
Знаковый обратный ключ
Данная форма записи отличается от прямых кодов только тем, что отрицательное число в ней получается путем инвертирования всех разрядов ключа. При этом цифровые и знаковые разряды идентичны. Благодаря этому, алгоритмы работы с таким видом кодов существенно упрощаются. Однако обратный ключ требует специальный алгоритм для распознавания символа первого разряда, вычисления абсолютной величины числа. А также восстановления знака результирующего значения. Более того, в обратном и прямом кодах числа для записи нуля используют два ключа. Несмотря на то что это значение не имеет положительного или отрицательного знака.
Знаковый дополнительный код двоичного числа
Данный вид записи не имеет перечисленных недостатков предыдущих ключей. Такие коды позволяют проводить непосредственное суммирование как положительных, так и отрицательных чисел. При этом не проводится анализ знакового разряда. Все это стало возможным благодаря тому факту, что дополнительные числа представляют собой естественное кольцо символов, а не искусственные образования, такие как прямые и обратные ключи. Более того, важным фактором является, то что произвести вычисления дополнений в двоичных кодах чрезвычайно просто. Для этого достаточно к обратному ключу добавить единицу. При использовании данного вида знакового кода, состоящего из восьми разрядов, диапазон возможных чисел составит от -128 до +127. Шестнадцатиразрядный ключ будет иметь диапазон от -32768 до +32767. В восьмиразрядных процессорах для хранения таких чисел также используют два соседних сектора.
Двоичный дополнительный код интересен наблюдаемым эффектом, который называют явлением распространения знака. Давайте разберемся, что это значит. Данный эффект заключается в том, что в процессе преобразования однобайтового значения в двухбайтовое достаточно каждому биту старшего байта назначить значения знаковых битов младшего байта. Получается, что для хранения знакового можно воспользоваться старшими битами. При этом значение ключа совершенно не изменяется.
Код Грея
Данная форма записи, по сути, является одношаговым ключом. То есть в процессе перехода от одного значения к другому меняется всего лишь один бит информации. При этом погрешность при считывании данных приводит к переходу от одного положения к другому с незначительным смещением по времени. Однако получение совершенно неверного результата углового положения при таком процессе полностью исключается. Достоинством такого кода является его способность зеркально отображать информацию. Например, инвертируя старшие биты, можно просто менять направление отсчета. Это происходит благодаря управляющему входу Complement. При этом выдаваемое значение может быть как возрастающим, так и спадающим при одном физическом направлении вращения оси. Так как информация, записанная в ключе Грея, имеет исключительно кодированный характер, который не несет реальных числовых данных, то перед дальнейшей работой требуется предварительно преобразовать его в обычную бинарную форму записи. Осуществляется это с помощью специального преобразователя - декодера Грей-Бинар. Данное устройство легко реализуется на элементарных логических элементах как аппаратным, так и программным способом.
Код Грея-Экспресс
Стандартный одношаговый ключ Грей подходит для решений, которые представлены в виде чисел, два. В случаях, где необходимо реализовывать иные решения, из такой формы записи вырезают и используют только средний участок. В результате сохраняется одношаговость ключа. Однако в таком коде началом числового диапазона не является нуль. Он смещается на заданное значение. В процессе обработки данных от генерируемых импульсов отнимают половину разницы между начальным и редуцированным разрешением.
Представление дробного числа в двоичном ключе с фиксированной запятой
В процессе работы приходится оперировать не только целыми цифрами, но и дробными. Такие числа можно записывать с помощью прямых, обратных и дополнительных кодов. Принцип построения упомянутых ключей такой же, как и у целых. До сих пор мы считали, что двоичная запятая должна находиться справа от младшего разряда. Но это не так. Она может располагаться и слева от старшего разряда (в таком случае в качестве переменной можно записывать исключительно дробные числа), и посередине переменной (можно записывать смешанные значения).
Представление двоичного кода с плавающей запятой
Такая форма применяется для записи либо наоборот - очень малых. В качестве примера можно привести межзвездные расстояния или размеры атомов и электронов. При вычислении таких значений пришлось бы применять двоичный код с очень большой разрядностью. Однако нам нет необходимости учитывать космические расстояние с точностью до миллиметра. Поэтому форма записи с фиксированной запятой в данном случае неэффективна. Для отображения таких кодов используется алгебраическая форма. То есть число записывается как мантисса, умноженная на десять в степени, отображающей нужный порядок числа. Следует знать, что мантисса не должна быть больше единицы, а после запятой не должен записываться ноль.
Считается, что двоичное исчисление было изобретено в начале 18-го века математиком из Германии Готфридом Лейбницем. Однако, как недавно открыли ученые, задолго до полинезийского острова Мангареву использовали данный вид арифметики. Несмотря на то что колонизация практически полностью уничтожила оригинальные системы исчисления, ученые восстановили сложные двоичные и десятичные виды счета. Кроме того, ученый Когнитивист Нуньес утверждает, что кодирование двоичным кодом применялось в древнем Китае еще в 9-м веке до н. э. Другие древние цивилизации, например, индейцы майя, также использовали сложные комбинации десятичных и бинарных систем для отслеживания временных интервалов и астрономических явлений.
Одиночный цифровой сигнал не слишком информативен, ведь он может принимать только два значения: нуль и единица. Поэтому в тех случаях, когда необходимо передавать, обрабатывать или хранить большие объемы информации, обычно применяют несколько параллельных цифровых сигналов. При этом все эти сигналы должны рассматриваться только одновременно, каждый из них по отдельности не имеет смысла. В таких случаях говорят о двоичных кодах, то есть о кодах, образованных цифровыми (логическими, двоичными) сигналами. Каждый из логических сигналов, входящих в код, называется разрядом. Чем больше разрядов входит в код, тем больше значений может принимать данный код.
В отличие от привычного для нас десятичного кодирования чисел, то есть кода с основанием десять, при двоичном кодировании в основании кода лежит число два (рис. 2.9). То есть каждая цифра кода (каждый разряд) двоичного кода может принимать не десять значений (как в десятичном коде: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9), а всего лишь два - 0 и 1. Система позиционной записи остается такой же, то есть справа пишется самый младший разряд, а слева - самый старший. Но если в десятичной системе вес каждого следующего разряда больше веса предыдущего в десять раз, то в двоичной системе (при двоичном кодировании) - в два раза. Каждый разряд двоичного кода называется бит (от английского "Binary Digit" - "двоичное число").
Рис. 2.9. Десятичное и двоичное кодирование
В табл. 2.3 показано соответствие первых двадцати чисел в десятичной и двоичной системах.
Из таблицы видно, что требуемое количество разрядов двоичного кода значительно больше, чем требуемое количество разрядов десятичного кода. Максимально возможное число при количестве разрядов, равном трем, составляет при десятичной системе 999, а при двоичной - всего лишь 7 (то есть 111 в двоичном коде). В общем случае n-разрядное двоичное число может принимать 2 n различных значений, а n-разрядное десятичное число - 10 n значений. То есть запись больших двоичных чисел (с количеством разрядов больше десяти) становится не слишком удобной.
Таблица 2.3. Соответствие чисел в десятичной и двоичной системах | |||
Десятичная система | Двоичная система | Десятичная система | Двоичная система |
Для того чтобы упростить запись двоичных чисел, была предложена так называемая шестнадцатеричная система (16-ричное кодирование). В этом случае все двоичные разряды разбиваются на группы по четыре разряда (начиная с младшего), а затем уже каждая группа кодируется одним символом. Каждая такая группа называется полубайтом (или нибблом , тетрадой ), а две группы (8 разрядов) - байтом. Из табл. 2.3 видно, что 4-разрядное двоичное число может принимать 16 разных значений (от 0 до 15). Поэтому требуемое число символов для шестнадцатиричного кода тоже равно 16, откуда и происходит название кода. В качестве первых 10 символов берутся цифры от 0 до 9, а затем используются 6 начальных заглавных букв латинского алфавита: A, B, C, D, E, F.
Рис. 2.10. Двоичная и 16-ричная запись числа
В табл. 2.4 приведены примеры 16-ричного кодирования первых 20 чисел (в скобках приведены двоичные числа), а на рис. 2.10 показан пример записи двоичного числа в 16-ричном виде. Для обозначения 16-ричного кодирования иногда применяют букву "h" или "H" (от английского Hexadecimal) в конце числа, например, запись A17F h обозначает 16-ричное число A17F. Здесь А1 представляет собой старший байт числа, а 7F - младший байт числа. Все число (в нашем случае - двухбайтовое) называется словом .
Таблица 2.4. 16-ричная система кодирования | |||
Десятичная система | 16-ричная система | Десятичная система | 16-ричная система |
0 (0) | A (1010) | ||
1(1) | B (1011) | ||
2 (10) | C (1100) | ||
3 (11) | D (1101) | ||
4 (100) | E (1110) | ||
5 (101) | F (1111) | ||
6 (110) | 10 (10000) | ||
7 (111) | 11 (10001) | ||
8 (1000) | 12 (10010) | ||
9 (1001) | 13 (10011) |
Для перевода 16-ричного числа в десятичное необходимо умножить значение младшего (нулевого) разряда на единицу, значение следующего (первого) разряда на 16, второго разряда на 256 (16 2) и т.д., а затем сложить все произведения. Например, возьмем число A17F:
A17F=F*16 0 + 7*16 1 + 1*16 2 + A*16 3 = 15*1 + 7*16+1*256+10*4096=41343
Но каждому специалисту по цифровой аппаратуре (разработчику, оператору, ремонтнику, программисту и т.д.) необходимо научиться так же свободно обращаться с 16-ричной и двоичной системами, как и с обычной десятичной, чтобы никаких переводов из системы в систему не требовалось.
Помимо рассмотренных кодов, существует также и так называемое двоично-десятичное представление чисел. Как и в 16-ричном коде, в двоично-десятичном коде каждому разряду кода соответствует четыре двоичных разряда, однако каждая группа из четырех двоичных разрядов может принимать не шестнадцать, а только десять значений, кодируемых символами 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. То есть одному десятичному разряду соответствует четыре двоичных. В результате получается, что написание чисел в двоично-десятичном коде ничем не отличается от написания в обычном десятичном коде (табл. 2.6), но в реальности это всего лишь специальный двоичный код, каждый разряд которого может принимать только два значения: 0 и 1. Двоично-десятичный код иногда очень удобен для организации десятичных цифровых индикаторов и табло.
Таблица 2.6. Двоично-десятичная система кодирования | |||
Десятичная система | Двоично-десятичная система | Десятичная система | Двоично-десятичная система |
0 (0) | 10 (1000) | ||
1(1) | 11 (1001) | ||
2 (10) | 12 (10010) | ||
3 (11) | 13 (10011) | ||
4 (100) | 14 (10100) | ||
5 (101) | 15 (10101) | ||
6 (110) | 16 (10110) | ||
7 (111) | 17 (10111) | ||
8 (1000) | 18 (11000) | ||
9 (1001) | 19 (11001) |
В двоичном коде над числами можно проделывать любые арифметические операции: сложение, вычитание, умножение, деление.
Рассмотрим, например, сложение двух 4-разрядных двоичных чисел. Пусть надо сложить число 0111 (десятичное 7) и 1011 (десятичное 11). Сложение этих чисел не сложнее, чем в десятичном представлении:
При сложении 0 и 0 получаем 0, при сложении 1 и 0 получаем 1, при сложении 1 и 1 получаем 0 и перенос в следующий разряд 1. Результат - 10010 (десятичное 18). При сложении любых двух n-разрядных двоичных чисел может получиться n-разрядное или (n+1)-разрядное число.
Точно так же производится вычитание. Пусть из числа 10010 (18) надо вычесть число 0111 (7). Записываем числа с выравниванием по младшему разряду и вычитаем точно так же, как в случае десятичной системы:
При вычитании 0 из 0 получаем 0, при вычитании 0 из 1 получаем 1, при вычитании 1 из 1 получаем 0, при вычитании 1 из 0 получаем 1 и заем 1 в следующем разряде. Результат - 1011 (десятичное 11).
При вычитании возможно получение отрицательных чисел, поэтому необходимо использовать двоичное представление отрицательных чисел.
Для одновременного представления как двоичных положительных, так и двоичных отрицательных чисел чаще всего используется так называемый дополнительный код. Отрицательные числа в этом коде выражаются таким числом, которое, будучи сложено с положительным числом такой же величины, даст в результате нуль. Для того чтобы получить отрицательное число, надо поменять все биты такого же положительного числа на противоположные (0 на 1, 1 на 0) и прибавить к результату 1. Например, запишем число –5. Число 5 в двоичном коде выглядит 0101. Заменяем биты на противоположные: 1010 и прибавляем единицу: 1011. Суммируем результат с исходным числом: 1011 + 0101 = 0000 (перенос в пятый разряд игнорируем).
Отрицательные числа в дополнительном коде отличаются от положительных значением старшего разряда: единица в старшем разряде определяет отрицательное число, а нуль - положительное.
Помимо стандартных арифметических операций, в двоичной системе счисления используются и некоторые специфические операции, например, сложение по модулю 2. Эта операция (обозначается A) является побитовой, то есть никаких переносов из разряда в разряд и заемов в старших разрядах здесь не существует. Правила сложения по модулю 2 следующие: , , . Эта же операция называется функцией Исключающее ИЛИ . Например, просуммируем по модулю 2 два двоичных числа 0111 и 1011:
Среди других побитовых операций над двоичными числами можно отметить функцию И и функцию ИЛИ. Функция И дает в результате единицу только тогда, когда в соответствующих битах двух исходных чисел обе единицы, в противном случае результат -0. Функция ИЛИ дает в результате единицу тогда, когда хотя бы один из соответствующих битов исходных чисел равен 1, в противном случае результат 0.
08. 06.2018
Блог Дмитрия Вассиярова.
Двоичный код — где и как применяется?
Сегодня я по-особому рад своей встрече с вами, дорогие мои читатели, ведь я чувствую себя учителем, который на самом первом уроке начинает знакомить класс с буквами и цифрами. А поскольку мы живем в мире цифровых технологий, то я расскажу вам, что такое двоичный код, являющийся их основой.
Начнем с терминологии и выясним, что означит двоичный. Для пояснения вернемся к привычному нам исчислению, которое называется «десятичным». То есть, мы используем 10 знаков-цифр, которые дают возможность удобно оперировать различными числами и вести соответствующую запись.
Следуя этой логике, двоичная система предусматривает использование только двух знаков. В нашем случае, это всего лишь «0» (ноль) и «1» единица. И здесь я хочу вас предупредить, что гипотетически на их месте могли бы быть и другие условные обозначения, но именно такие значения, обозначающие отсутствие (0, пусто) и наличие сигнала (1 или «палочка»), помогут нам в дальнейшем уяснить структуру двоичного кода.
Зачем нужен двоичный код?
До появления ЭВМ использовались различные автоматические системы, принцип работы которых основан на получении сигнала. Срабатывает датчик, цепь замыкается и включается определенное устройство. Нет тока в сигнальной цепи – нет и срабатывания. Именно электронные устройства позволили добиться прогресса в обработке информации, представленной наличием или отсутствием напряжения в цепи.
Дальнейшее их усложнение привело к появлению первых процессоров, которые так же выполняли свою работу, обрабатывая уже сигнал, состоящий из импульсов, чередующихся определенным образом. Мы сейчас не будем вникать в программные подробности, но для нас важно следующее: электронные устройства оказались способными различать заданную последовательность поступающих сигналов. Конечно, можно и так описать условную комбинацию: «есть сигнал»; «нет сигнала»; «есть сигнал»; «есть сигнал». Даже можно упростить запись: «есть»; «нет»; «есть»; «есть».
Но намного проще обозначить наличие сигнала единицей «1», а его отсутствие – нулем «0». Тогда мы вместо всего этого сможем использовать простой и лаконичный двоичный код: 1011.
Безусловно, процессорная техника шагнула далеко вперед и сейчас чипы способны воспринимать не просто последовательность сигналов, а целые программы, записанные определенными командами, состоящими из отдельных символов.
Но для их записи используется все тот же двоичный код, состоящий из нулей и единиц, соответствующий наличию или отсутствию сигнала. Есть он, или его нет – без разницы. Для чипа любой из этих вариантов – это единичная частичка информации, которая получила название «бит» (bit — официальная единица измерения).
Условно, символ можно закодировать последовательностью из нескольких знаков. Двумя сигналами (или их отсутствием) можно описать всего четыре варианта: 00; 01;10; 11. Такой способ кодирования называется двухбитным. Но он может быть и:
- Четырехбитным (как в примере на абзац выше 1011) позволяет записать 2^4 = 16 комбинаций-символов;
- Восьмибитным (например: 0101 0011; 0111 0001). Одно время он представлял наибольший интерес для программирования, поскольку охватывал 2^8 = 256 значений. Это давало возможность описать все десятичные цифры, латинский алфавит и специальные знаки;
- Шестнадцатибитным (1100 1001 0110 1010) и выше. Но записи с такой длинной – это уже для современных более сложных задач. Современные процессоры используют 32-х и 64-х битную архитектуру;
Скажу честно, единой официальной версии нет, то так сложилось, что именно комбинация из восьми знаков стала стандартной мерой хранящейся информации, именуемой «байт». Таковая могла применяться даже к одной букве, записанной 8-и битным двоичным кодом. Итак, дорогие мои друзья, запомните пожалуйста (если кто не знал):
8 бит = 1 байт.
Так принято. Хотя символ, записанный 2-х или 32-х битным значением так же номинально можно назвать байтом. Кстати, благодаря двоичному коду мы можем оценивать объемы файлов, измеряемые в байтах и скорость передачи информации и интернета (бит в секунду).
Бинарная кодировка в действии
Для стандартизации записи информации для компьютеров было разработано несколько кодировочных систем, одна из которых ASCII, базирующаяся на 8-и битной записи, получила широкое распространение. Значения в ней распределены особым образом:
- первый 31 символ – управляющие (с 00000000 по 00011111). Служат для служебных команд, вывода на принтер или экран, звуковых сигналов, форматирования текста;
- следующие с 32 по 127 (00100000 – 01111111) латинский алфавит и вспомогательные символы и знаки препинания;
- остальные, до 255-го (10000000 – 11111111) – альтернативная, часть таблицы для специальных задач и отображения национальных алфавитов;
Расшифровка значений в ней показано в таблице.
Если вы считаете, что «0» и «1» расположены в хаотичном порядке, то глубоко ошибаетесь. На примере любого числа я вам покажу закономерность и научу читать цифры, записанные двоичным кодом. Но для этого примем некоторые условности:
- Байт из 8 знаков будем читать справа налево;
- Если в обычных числах у нас используются разряды единиц, десятков, сотен, то здесь (читая в обратном порядке) для каждого бита представлены различные степени «двойки»: 256-124-64-32-16-8- 4-2-1;
- Теперь смотрим на двоичный код числа, например 00011011. Там, где в соответствующей позиции есть сигнал «1» – берем значения этого разряда и суммируем их привычным способом. Соответственно: 0+0+0+32+16+0+2+1 = 51. В правильности данного метода вы можете убедиться, взглянув на таблицу кодов.
Теперь, мои любознательные друзья, вы не только знаете что такое двоичный код, но и умеете преобразовать зашифрованную им информацию.
Язык, понятный современной технике
Конечно, алгоритм считывания двоичного кода процессорными устройствами намного сложнее. Но зато его помощью можно записать все что угодно:
- Текстовую информацию с параметрами форматирования;
- Числа и любые операции с ними;
- Графические и видео изображения;
- Звуки, в том числе и выходящие и за предел нашей слышимости;
Помимо этого, благодаря простоте «изложения» возможны различные способы записи бинарной информации:
Дополняет преимущества двоичного кодирования практически неограниченные возможности по передаче информации на любые расстояния. Именно такой способ связи используется с космическими кораблями и искусственными спутниками.
Так что, сегодня двоичная система счисления является языком, понятным большинству используемых нами электронных устройств. И что самое интересное, никакой другой альтернативы для него пока не предвидится.
Думаю, что изложенной мною информации для начала вам будет вполне достаточно. А дальше, если возникнет такая потребность, каждый сможет углубиться в самостоятельное изучение этой темы.
Я же буду прощаться и после небольшого перерыва подготовлю для вас новую статью моего блога, на какую-нибудь интересную тему.
Лучше, если вы сами ее мне подскажите;)
До скорых встреч.