Двоичный язык. Кодирование информации




Решил сделать такой ниструмент как преобразование текста в двоичный код и обратно, такие сервисы есть, но они как правило работают с латиницей, мой же транслятор работает с кодировкой unicode формата UTF-8 , который кодирует кириллические символы двумя байтами.На данный момент возможности транслятора ограничены двухбайтными кодировками т.е. китайские иероглифы транслировать не получиться, но я собираюсь исправить это досадное недоразумение.

Для преобразования текста в бинарное представление введите текст в левое окошко и нажмите TEXT->BIN в правом окошке появится его двоичное представление.

Для преобразования бинарного кода в текст введите кода в правое окошко и нажмите BIN->TEXT в левом окошке появится его символьное представление.

В случае, если перевод бинарного кода в текст или наоборот не получился - проверьте корректность ваших данных!

Обновление!

Теперь доступно обратное преобразование текста вида:

в нормальный вид. Для этого нужно поставить галочку: "Заменить 0 пробелами, а 1 заполнителем █". Затем вставьте текст в правое окошко: "Текст в бинарном представлении" и нажмите кнопку под ним "BIN->TEXT".

При копировании таких текстов нужно быть осторожным т.к. можно запросто потерять пробелы в начале или в конце. Например строка сверху имеет вид:

██ █ █ ███████ █ ██ ██ █ █ ███ ██ █ █ ██ █ ██ █ █ ██ █ ███ █ ██ █ █ ██ █ █ ███ ██ █ █ ███ ██ █ ██

а на красном фоне:

██ █ █ ███████ █ ██ ██ █ █ ███ ██ █ █ ██ █ ██ █ █ ██ █ ███ █ ██ █ █ ██ █ █ ███ ██ █ █ ███ ██ █ ██

видите сколько пробелов в конце можно потерять?

Компьютеры не понимают слов и цифр так, как это делают люди. Современное программное обеспечение позволяет конечному пользователю игнорировать это, но на самых низких уровнях ваш компьютер оперирует двоичным электрическим сигналом, который имеет только два состояния : есть ток или нет тока. Чтобы «понять» сложные данные, ваш компьютер должен закодировать их в двоичном формате.

Двоичная система основывается на двух цифрах – 1 и 0, соответствующим состояниям включения и выключения, которые ваш компьютер может понять. Вероятно, вы знакомы с десятичной системой. Она использует десять цифр – от 0 до 9, а затем переходит к следующему порядку, чтобы сформировать двузначные числа, причем цифра из каждого следующего порядка в десять раз больше, чем предыдущая. Двоичная система аналогична, причем каждая цифра в два раза больше, чем предыдущая.

Подсчет в двоичном формате

В двоичном выражении первая цифра равноценна 1 из десятичной системы. Вторая цифра равна 2, третья – 4, четвертая – 8, и так далее – удваивается каждый раз. Добавление всех этих значений даст вам число в десятичном формате.

1111 (в двоичном формате) = 8 + 4 + 2 + 1 = 15 (в десятичной системе)

Учет 0 даёт нам 16 возможных значений для четырех двоичных битов. Переместитесь на 8 бит, и вы получите 256 возможных значений. Это занимает намного больше места для представления, поскольку четыре цифры в десятичной форме дают нам 10000 возможных значений. Конечно, бинарный код занимает больше места, но компьютеры понимают двоичные файлы намного лучше, чем десятичную систему. И для некоторых вещей, таких как логическая обработка, двоичный код лучше десятичного.

Следует сказать, что существует ещё одна базовая система, которая используется в программировании: шестнадцатеричная . Хотя компьютеры не работают в шестнадцатеричном формате, программисты используют её для представления двоичных адресов в удобочитаемом формате при написании кода. Это связано с тем, что две цифры шестнадцатеричного числа могут представлять собой целый байт, то есть заменяют восемь цифр в двоичном формате. Шестнадцатеричная система использует цифры 0-9, а также буквы от A до F, чтобы получить дополнительные шесть цифр.

Почему компьютеры используют двоичные файлы

Короткий ответ: аппаратное обеспечение и законы физики. Каждый символ в вашем компьютере является электрическим сигналом, и в первые дни вычислений измерять электрические сигналы было намного сложнее. Было более разумно различать только «включенное» состояние, представленное отрицательным зарядом, и «выключенное» состояние, представленное положительным зарядом.

Для тех, кто не знает, почему «выключено» представлено положительным зарядом, это связано с тем, что электроны имеют отрицательный заряд, а больше электронов – больше тока с отрицательным зарядом.

Таким образом, ранние компьютеры размером с комнату использовали двоичные файлы для создания своих систем, и хотя они использовали более старое, более громоздкое оборудование, они работали на тех же фундаментальных принципах. Современные компьютеры используют, так называемый, транзистор для выполнения расчетов с двоичным кодом.

Вот схема типичного транзистора:

По сути, он позволяет току течь от источника к стоку, если в воротах есть ток. Это формирует двоичный ключ. Производители могут создавать эти транзисторы невероятно малыми – вплоть до 5 нанометров или размером с две нити ДНК. Это то, как работают современные процессоры, и даже они могут страдать от проблем с различением включенного и выключенного состояния (хотя это связано с их нереальным молекулярным размером, подверженным странностям квантовой механики ).

Почему только двоичная система

Поэтому вы можете подумать: «Почему только 0 и 1? Почему бы не добавить ещё одну цифру?». Хотя отчасти это связано с традициями создания компьютеров, вместе с тем, добавление ещё одной цифры означало бы необходимость выделять ещё одно состояние тока, а не только «выключен» или «включен».

Проблема здесь в том, что если вы хотите использовать несколько уровней напряжения, вам нужен способ легко выполнять вычисления с ними, а современное аппаратное обеспечение, способное на это, не жизнеспособно как замена двоичных вычислений. Например, существует, так называемый, тройной компьютер , разработанный в 1950-х годах, но разработка на том и прекратилась. Тернарная логика более эффективна, чем двоичная, но пока ещё нет эффективной замены бинарного транзистора или, по крайней мере, нет транзистора столь же крошечных масштабов, что и двоичные.

Причина, по которой мы не можем использовать тройную логику, сводится к тому, как транзисторы соединяются в компьютере и как они используются для математических вычислений. Транзистор получает информацию на два входа, выполняет операцию и возвращает результат на один выход.

Таким образом, бинарная математика проще для компьютера, чем что-либо ещё. Двоичная логика легко преобразуется в двоичные системы, причем True и False соответствуют состояниям Вкл и Выкл .

Бинарная таблица истинности, работающая на двоичной логике, будет иметь четыре возможных выхода для каждой фундаментальной операции. Но, поскольку тройные ворота используют три входа, тройная таблица истинности имела бы 9 или более. В то время как бинарная система имеет 16 возможных операторов (2^2^2), троичная система имела бы 19683 (3^3^3). Масштабирование становится проблемой, поскольку, хотя троичность более эффективна, она также экспоненциально более сложна.

Кто знает? В будущем мы вполне возможно увидим тройничные компьютеры, поскольку бинарная логика столкнулась с проблемами миниатюризации. Пока же мир будет продолжать работать в двоичном режиме.

Все символы и буквы могут быть закодированы при помощи восьми двоичных бит. Наиболее распространенными таблицами представления букв в двоичном коде являются 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 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 | Вертикальная черта
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). В качестве примера ниже приведен участок текста данной страницы (дамп памяти). На этом участке записан ее первый абзац. Для отображения информации в дампе памяти применен следующий формат:

  • в первой колонке записан двоичный адрес первого байта строки
  • в следующи шестнадцати колонках записаны байты, содержащиеся в текстовом файле. Для более удобного определения номера байта после восьмой колонки проведена вертикальная линия. Байты, для краткости записи, представлены в шестнадцатеричном коде.
  • в последней колонке эти же байты представлены в виде отображаемых буквенных символов
00000000: 82 E1 A5 20 E1 A8 AC A2 ¦ AE AB EB 20 A8 20 A1 E3 Все символы и бу 00000010: AA A2 EB 20 AC AE A3 E3 ¦ E2 20 A1 EB E2 EC 20 A7 квы могут быть з 00000020: A0 AA AE A4 A8 E0 AE A2 ¦ A0 AD EB 20 AF E0 A8 20 акодированы при 00000030: AF AE AC AE E9 A8 20 A2 ¦ AE E1 EC AC A8 20 A4 A2 помощи восьми дв 00000040: AE A8 E7 AD EB E5 20 E1 ¦ A8 AC A2 AE AB AE A2 2E оичных символов. 00000050: 0D 0A 8D A0 A8 A1 AE AB ¦ A5 A5 20 E0 A0 E1 AF E0 ♪◙Наиболее распр 00000060: AE E1 E2 E0 A0 AD A5 AD ¦ AD EB AC A8 20 E2 A0 A1 остраненными таб 00000070: AB A8 E6 A0 AC A8 20 EF ¦ A2 AB EF EE E2 E1 EF 20 лицами являются 00000080: E2 A0 A1 AB A8 E6 EB 20 ¦ 41 53 43 49 49 20 E1 20 таблицы ASCII с 00000090: AD A0 E6 A8 AE AD A0 AB ¦ EC AD EB AC A8 0D 0A E0 национальными♪◙р 000000A0: A0 E1 E8 A8 E0 A5 AD A8 ¦ EF AC A8 2C 20 AF E0 A8 асширениями, при 000000B0: AC A5 AD EF EE E9 A8 A5 ¦ E1 EF 20 A2 20 44 4F 53 меняющиеся в DOS 000000C0: 20 28 A8 20 AA AE E2 AE ¦ E0 EB A5 20 AC AE A6 AD (и которые можн 000000D0: AE 20 A8 E1 AF AE AB EC ¦ A7 AE A2 A0 E2 EC 20 A4 о использовать д 000000E0: AB EF 20 A7 A0 AF A8 E1 ¦ A8 0D 0A E2 A5 AA E1 E2 ля записи♪◙текст 000000F0: AE A2 20 A2 20 AC A8 AA ¦ E0 AE AF E0 AE E6 A5 E1 ов в микропроцес 00000100: E1 AE E0 A0 E5 29 2C 20 ¦ A8 20 E2 A0 A1 AB A8 E6 сорах),и таблиц 00000110: EB 20 41 4E 53 49 2C 20 ¦ AF E0 A8 AC A5 AD EF EE ы ANSI, применяю 00000120: E9 A8 A5 E1 EF 20 A2 20 ¦ 57 49 4E 44 4F 57 53 2E щиеся в WINDOWS. 00000130: 20 82 20 E2 A0 A1 AB A8 ¦ E6 A0 E5 0D 0A 41 53 43 В таблицах♪◙ASC 00000140: 49 49 20 A8 20 41 4E 53 ¦ 49 20 AF A5 E0 A2 EB A5 II и ANSI первые 00000150: 20 31 32 38 20 E1 A8 AC ¦ A2 AE AB AE A2 20 E1 AE 128 символов со 00000160: A2 AF A0 A4 A0 EE E2 2E ¦ 20 82 20 ED E2 AE A9 20 впадают. В этой 00000170: E7 A0 E1 E2 A8 20 E2 A0 ¦ A1 AB A8 E6 EB 20 E1 AE части таблицы со 00000180: A4 A5 E0 A6 A0 E2 E1 EF ¦ 0D 0A E1 A8 AC A2 AE AB держатся♪◙символ 00000190: EB 20 E6 A8 E4 E0 2C 20 ¦ A7 AD A0 AA AE A2 20 AF ы цифр, знаков п 000001A0: E0 A5 AF A8 AD A0 AD A8 ¦ EF 2C 20 AB A0 E2 A8 AD репинания, латин 000001B0: E1 AA A8 A5 20 A1 E3 AA ¦ A2 EB 20 A2 A5 E0 E5 AD ские буквы верхн 000001C0: A5 A3 AE 20 A8 20 AD A8 ¦ A6 AD A5 A3 AE 20 E0 A5 его инижнего ре 000001D0: A3 A8 E1 E2 E0 AE A2 20 ¦ A8 0D 0A E3 AF E0 A0 A2 гистров и♪◙управ 000001E0: AB EF EE E9 A8 A5 20 E1 ¦ A8 AC A2 AE AB EB 2E 20 ляющие символы. 000001F0: 8D A0 E6 A8 AE AD A0 AB ¦ EC AD EB A5 20 E0 A0 E1 Национальные рас 00000200: E8 A8 E0 A5 AD A8 EF 20 ¦ E1 A8 AC A2 AE AB EC AD ширения символьн 00000210: EB E5 20 E2 A0 A1 AB A8 ¦ E6 20 A8 20 E1 A8 AC A2 ыхтаблиц и симв 00000220: AE AB EB 0D 0A AF E1 A5 ¦ A2 A4 AE A3 E0 A0 E4 A8 олы♪◙псевдографи 00000230: AA A8 20 E1 AE A4 A5 E0 ¦ A6 A0 E2 E1 EF 20 A2 20 ки содержатся в 00000240: AF AE E1 AB A5 A4 AD A8 ¦ E5 20 31 32 38 20 AA AE последних 128 ко 00000250: A4 A0 E5 20 ED E2 A8 E5 ¦ 20 E2 A0 A1 AB A8 E6 2C дах этих таблиц, 00000260: 20 AF AE ED E2 AE AC E3 ¦ 20 E0 E3 E1 E1 AA A8 A5 поэтому русские 00000270: 0D 0A E2 A5 AA E1 E2 EB ¦ 20 A2 20 AE AF A5 E0 A0 ♪◙тексты в опера 00000280: E6 A8 AE AD AD EB E5 20 ¦ E1 A8 E1 E2 A5 AC A0 E5 ционных системах 00000290: 20 44 4F 53 20 A8 20 57 ¦ 49 4E 44 4F 57 53 20 AD DOS и WINDOWS н 000002A0: A5 20 E1 AE A2 AF A0 A4 ¦ A0 EE E2 2E 0D 0A е совпадают.♪◙

В приведенном примере видно, что первая строка текста занимает 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

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. В правильности данного метода вы можете убедиться, взглянув на таблицу кодов.

Теперь, мои любознательные друзья, вы не только знаете что такое двоичный код, но и умеете преобразовать зашифрованную им информацию.

Язык, понятный современной технике

Конечно, алгоритм считывания двоичного кода процессорными устройствами намного сложнее. Но зато его помощью можно записать все что угодно:

  • Текстовую информацию с параметрами форматирования;
  • Числа и любые операции с ними;
  • Графические и видео изображения;
  • Звуки, в том числе и выходящие и за предел нашей слышимости;

Помимо этого, благодаря простоте «изложения» возможны различные способы записи бинарной информации:

  • Изменением магнитного поля на ;
  • Дополняет преимущества двоичного кодирования практически неограниченные возможности по передаче информации на любые расстояния. Именно такой способ связи используется с космическими кораблями и искусственными спутниками.

    Так что, сегодня двоичная система счисления является языком, понятным большинству используемых нами электронных устройств. И что самое интересное, никакой другой альтернативы для него пока не предвидится.

    Думаю, что изложенной мною информации для начала вам будет вполне достаточно. А дальше, если возникнет такая потребность, каждый сможет углубиться в самостоятельное изучение этой темы.

    Я же буду прощаться и после небольшого перерыва подготовлю для вас новую статью моего блога, на какую-нибудь интересную тему.

    Лучше, если вы сами ее мне подскажите;)

    До скорых встреч.

    Разрядность двоичного кода, Преобразование информации из непрерывной формы в дискретную, Универсальность двоичного кодирования, Равномерные и неравномерные коды, Информатика 7 класс Босова, Информатика 7 класс

    1.5.1. Преобразование информации из непрерывной формы в дискретную
    Для решения своих задач человеку часто приходится преобразовывать имеющуюся информацию из одной формы представления в другую. Например, при чтении вслух происходит преобразование информации из дискретной (текстовой) формы в непрерывную (звук). Во время диктанта на уроке русского языка, наоборот, происходит преобразование информации из непрерывной формы (голос учителя) в дискретную (записи учеников).
    Информация, представленная в дискретной форме, значительно проще для передачи, хранения или автоматической обработки. Поэтому в компьютерной технике большое внимание уделяется методам преобразования информации из непрерывной формы в дискретную.
    Дискретизация информации - процесс преобразования информации из непрерывной формы представления в дискретную.
    Рассмотрим суть процесса дискретизации информации на примере.
    На метеорологических станциях имеются самопишущие приборы для непрерывной записи атмосферного давления . Результатом их работы являются барограммы - кривые, показывающие, как изменялось давление в течение длительных промежутков времени. Одна из таких кривых, вычерченная прибором в течение семи часов проведения наблюдений, показана на рис. 1.9.

    На основании полученной информации можно построить таблицу, содержащую показания прибора в начале измерений и на конец каждого часа наблюдений (рис. 1.10).

    Полученная таблица даёт не совсем полную картину того, как изменялось давление за время наблюдений: например, не указано самое большое значение давления, имевшее место в течение четвёртого часа наблюдений. Но если занести в таблицу значения давления, наблюдаемые каждые полчаса или 15 минут, то новая таблица будет давать более полное представление о том, как изменялось давление.
    Таким образом, информацию, представленную в непрерывной форме (барограмму, кривую), мы с некоторой потерей точности преобразовали в дискретную форму (таблицу).
    В дальнейшем вы познакомитесь со способами дискретного представления звуковой и графической информации.

    Цепочки из трёх двоичных символов получаются дополнением двухразрядных двоичных кодов справа символом 0 или 1. В итоге кодовых комбинаций из трёх двоичных символов получается 8 - вдвое больше, чем из двух двоичных символов:
    Соответственно, четырёхразрядйый двоичный позволяет получить 16 кодовых комбинаций, пятиразрядный - 32, шестиразрядный - 64 и т. д. Длину двоичной цепочки - количество символов в двоичном коде - называют разрядностью двоичного кода.
    Обратите внимание, что:
    4 = 2 * 2,
    8 = 2 * 2 * 2,
    16 = 2 * 2 * 2 * 2,
    32 = 2 * 2 * 2 * 2 * 2 и т. д.
    Здесь количество кодовых комбинаций представляет собой произведение некоторого количества одинаковых множителей, равного разрядности двоичного кода.
    Если количество кодовых комбинаций обозначить буквой N, а разрядность двоичного кода - буквой i, то выявленная закономерность в общем виде будет записана так:
    N = 2 * 2 * ... * 2.
    i множителей
    В математике такие произведения записывают в виде:
    N = 2 i .
    Запись 2 i читают так: «2 в i-й степени».

    Задача. Вождь племени Мульти поручил своему министру разработать двоичный и перевести в него всю важную информацию . Двоичный какой разрядности потребуется, если алфавит, используемый племенем Мульти, содержит 16 символов? Выпишите все кодовые комбинации.
    Решение. Так как алфавит племени Мульти состоит из 16 символов, то и кодовых комбинаций им нужно 16. В этом случае длина (разрядность) двоичного кода определяется из соотношения: 16 = 2 i . Отсюда i = 4.
    Чтобы выписать все кодовые комбинации из четырёх 0 и 1, воспользуемся схемой на рис. 1.13: 0000, 0001, 0010, 0011, 0100, 0101, 0110,0111,1000,1001,1010,1011,1100,1101,1110,1111.

    1.5.3. Универсальность двоичного кодирования
    В начале этого параграфа вы узнали, что, представленная в непрерывной форме, может быть выражена с помощью символов некоторого естественного или формального языка. В свою очередь, символы произвольного алфавита могут быть преобразованы в двоичный. Таким образом, с помощью двоичного кода может быть представлена любая на естественных и формальных языках, а также изображения и звуки (рис. 1.14). Это и означает универсальность двоичного кодирования.
    Двоичные коды широко используются в компьютерной технике, требуя только двух состояний электронной схемы - «включено» (это соответствует цифре 1) и «выключено» (это соответствует цифре 0).
    Простота технической реализации - главное достоинство двоичного кодирования. Недостаток двоичного кодирования - большая длина получаемого кода.

    1.5.4. Равномерные и неравномерные коды
    Различают равномерные и неравномерные коды. Равномерные коды в кодовых комбинациях содержат одинаковое число символов, неравномерные - разное.
    Выше мы рассмотрели равномерные двоичные коды.
    Примером неравномерного кода может служить азбука Морзе, в которой для каждой буквы и цифры определена последовательность коротких и длинных сигналов. Так, букве Е соответствует короткий сигнал («точка»), а букве Ш - четыре длинных сигнала (четыре «тире»). Неравномерное позволяет повысить скорость передачи сообщений за счёт того, что наиболее часто встречающиеся в передаваемой информации символы имеют самые короткие кодовые комбинации.

    Информация, которую дает этот символ, равна энтропии системы и максимальна в случае, когда оба состояния равновероятны; в этом случае элементарный символ передает информацию 1 (дв. ед.). Поэтому основой оптимального кодирования будет требование, чтобы элементарные символы в закодированном тексте встречались в среднем одинаково часто.

    Изложим здесь способ построения кода, удовлетворяющего поставленному условию; этот способ известен под названием «кода Шеннона - Фэно». Идея его состоит в том, что кодируемые символы (буквы или комбинации букв) разделяются на две приблизительно равновероятные группы: для первой группы символов на первом месте комбинации ставится 0 (первый знак двоичного числа, изображающего символ); для второй группы - 1. Далее каждая группа снова делится на две приблизительно равновероятные подгруппы; для символов первой подгруппы на втором месте ставится нуль; для второй подгруппы - единица и т. д.

    Продемонстрируем принцип построения кода Шеннона - Фэно на материале русского алфавита (табл. 18.8.1). Отсчитаем первые шесть букв (от «-» до «т»); суммируя их вероятности (частоты), получим 0,498; на все остальные буквы (от «н» до «сф») придется приблизительно такая же вероятность 0,502. Первые шесть букв (от «-» до «т») будут иметь на первом месте двоичный знак 0. Остальные буквы (от «н» до «ф») будут иметь на первом месте единицу. Далее снова разделим первую группу на две приблизительно равновероятные подгруппы: от «-» до «о» и от «е» до «т»; для всех букв первой подгруппы на втором месте поставим нуль, а второй подгруппы"- единицу. Процесс будем продолжать до тех пор, пока в каждом подразделении не останется ровно одна буква, которая и будет закодирована определенным двоичным числом. Механизм построения кода показан на таблице 18.8.2, а сам код приведен в таблице 18.8.3.

    Таблица 18.8.2.

    Двоичные знаки

    Таблица 18.8.3

    С помощью таблицы 18.8.3 можно закодировать и декодировать любое сообщение.

    В виде примера запишем двоичным кодом фразу: «теория информации»

    01110100001101000110110110000

    0110100011111111100110100

    1100001011111110101100110

    Заметим, что здесь нет необходимости отделять друг от друга буквы специальным знаком, так как и без этого декодирование выполняется однозначно. В этом можно убедиться, декодируя с помощью таблицы 18.8.2 следующую фразу:

    10011100110011001001111010000

    1011100111001001101010000110101

    010110000110110110

    («способ кодирования»).

    Однако необходимо отметить, что любая ошибка при кодировании (случайное перепутывание знаков 0 и 1) при таком коде губительна, так как декодирование всего следующего за ошибкой текста становится невозможным. Поэтому данный принцип кодирования может быть рекомендован только в случае, когда ошибки при кодировании и передаче сообщения практически исключены.

    Возникает естественный вопрос: а является ли составленный нами код при отсутствии ошибок действительно оптимальным? Для того чтобы ответить на этот вопрос, найдем среднюю информацию, приходящуюся на один элементарный символ (0 или 1), и сравним ее с максимально возможной информацией, которая равна одной двоичной единице. Для этого найдем сначала среднюю информацию, содержащуюся в одной букве передаваемого текста, т. е. энтропию на одну букву:

    ,

    где - вероятность того, что буква примет определенное состояние («-», о, е, а,…, ф).

    Из табл. 18.8.1 имеем

    (дв. единиц на букву текста).

    По таблице 18.8.2 определяем среднее число элементарных символов на букву

    Деля энтропию на, получаем информацию на один элементарный символ

    (дв. ед.).

    Таким образом, информация на один символ весьма близка к своему верхнему пределу 1, а выбранный нами код весьма близок к оптимальному. Оставаясь в пределах задачи кодирования по буквам, мы ничего лучшего получить не сможем.

    Заметим, что в случае кодирования просто двоичных номеров букв мы имели бы изображение каждой буквы пятью двоичными знаками и информация на один символ была бы

    (дв. ед.),

    т. е. заметно меньше, чем при оптимальном буквенном кодировании.

    Однако надо заметить, что кодирование «по буквам» вообще не является экономичным. Дело в том, что между соседними буквами любого осмысленного текста всегда имеется зависимость. Например, после гласной буквы в русском языке не может стоять «ъ» или «ь»; после шипящих не могут стоять «я» или «ю»; после нескольких согласных подряд увеличивается вероятность гласной и т. д.

    Мы знаем, что при объединении зависимых систем суммарная энтропия меньше суммы энтропий отдельных систем; следовательно, информация, передаваемая отрезком связного текста, всегда меньше, чем информация на один символ, умноженная на число символов. С учетом этого обстоятельства более экономный код можно построить, если кодировать не каждую букву в отдельности, а целые «блоки» из букв. Например, в русском тексте имеет смысл кодировать целиком некоторые часто встречающиеся комбинации букв, как «тся», «ает», «ние» и т. п. Кодируемые блоки располагаются в порядке убывания частот, как буквы в табл. 18.8.1, а двоичное кодирование осуществляется по тому же принципу.

    В ряде случаев оказывается разумным кодировать даже не блоки из букв, а целые осмысленные куски текста. Например, для разгрузки телеграфа в предпраздничные дни целесообразно кодировать условными номерами целые стандартные тексты, вроде:

    «поздравляю новым годом желаю здоровья успехов работе».

    Не останавливаясь специально на методах кодирования блоками, ограничимся тем, что сформулируем относящуюся сюда теорему Шеннона.

    Пусть имеется источник информации и приемник, связанные каналом связи (рис. 18.8.1).

    Известна производительность источника информации, т. е. среднее количество двоичных единиц информации, поступающее от источника в единицу времени (численно оно равно средней энтропии сообщения, производимого источникам в единицу времени). Пусть, кроме того, известна пропускная способность канала, т. е. максимальное количество информации (например, двоичных знаков 0 или 1), которое способен передать канал в ту же единицу времени. Возникает вопрос: какова должна быть пропускная способность канала, чтобы он «справлялся» со своей задачей, т. е. чтобы информация от источника к приемнику поступала без задержки?

    Ответ на этот вопрос дает первая теорема Шеннона. Сформулируем ее здесь без доказательства.

    1-я теорема Шеннона

    Если пропускная способность канала связи больше энтропии источника информации в единицу времени

    то всегда можно закодировать достаточно длинное сообщение так, чтобы оно передавалось каналом связи без задержки. Если же, напротив,

    то передача информации без задержек невозможна.