Двійковий код- це подання інформації шляхом поєднання символів 0 або 1. Іноді буває дуже складно зрозуміти принцип кодування інформації у вигляді цих двох чисел, проте ми намагатимемося все докладно роз'яснити.
До речі, на нашому сайті ви можете перекласти будь-який текст у десятковий, шістнадцятковий, двійковий код, скориставшись Калькулятором кодів онлайн.
Бачачи щось вперше, ми часто питаємо логічне питання про те, як це працює. Будь-яка нова інформація сприймається нами, як щось складне або створене виключно для розгляду здалеку, проте для людей, які бажають дізнатися детальніше про двійковому коді, відкривається нехитра істина - бінарний код зовсім не складний для розуміння, як нам здається. Наприклад, англійська літера T в двійковій системіприобретет такой вид - 01010100, E - 01000101 и буква X - 01011000. Исходя из этого, понимаем, что английское слово TEXT в виде двоичного кода будет выглядеть таким вот образом: 01010100 01000101 01011000 01010100. Компьютер понимает именно такое изложение символов для данного слова, ну а ми вважаємо за краще бачити його у викладі букв алфавіту.
На сьогоднішній день двійковий кодактивно використовується у програмуванні, оскільки працюють обчислювальні машини саме завдяки йому. Але програмування не звелося до нескінченного набору нулів та одиниць. Оскільки це досить трудомісткий процес, було вжито заходів для спрощення розуміння між комп'ютером та людиною. Вирішенням проблеми стало створення мов програмування (бейсик, сі++ тощо). У підсумку програміст пише програму мовою, яку він розуміє, а потім програма-компілятор переводить все в машинний код, запускаючи роботу комп'ютера.
Щоб перевести числа з десяткової системи числення в двійкову, користуються "алгоритмом заміщення", що складається з такої послідовності дій:
1. Вибираємо необхідне число і ділимо його на 2. Якщо результат поділу вийшов із залишком, то число двійкового коду буде 1, якщо залишку немає - 0.
2. Відкидаючи залишок, якщо він є, знову ділимо число, отримане в результаті першого поділу, на 2. Встановлюємо число двійкової системи залежно від наявності залишку.
3. Продовжуємо ділити, обчислюючи число двійкової системи з залишку, доки дійдемо до числа, яке ділити не можна - 0.
4. Зараз вважається, що двійковий код готовий.
Наприклад переведемо в двійкову систему число 7:
1. 7: 2 = 3.5. Оскільки залишок є записуємо першим числом двійкового коду 1.
2. 3: 2 = 1.5. Повторюємо процедуру з вибором числа коду між 1 та 0 залежно від залишку.
3. 1: 2 = 0.5. Знову вибираємо 1 за тим самим принципом.
4. В результаті отримуємо, переведений із десяткової системи числення до двійкової, код - 111.
Таким чином можна перекладати безліч чисел. Тепер спробуємо зробити навпаки – перевести число з двійкової до десяткової.
Для цього нам потрібно пронумерувати наше двійкове число 111 з кінця, починаючи з нуля. Для 111 це 1^2 1^1 1^0. Виходячи з цього номер для числа послужить його ступенем. Далі виконуємо дії за формулою: (x * 2 ^ y) + (x * 2 ^ y) + (x * 2 ^ y), де x - порядкове число двійкового коду, а y - ступінь цього числа. Підставляємо наше двійкове число під цю формулу та рахуємо результат. Отримуємо: (1 * 2 ^ 2) + (1 * 2 ^ 1) + (1 * 2 ^ 0) = 4 + 2 + 1 = 7.
Вважають, що вперше двійкову системузапропонував Готфрід Вільгельм Лейбніц, який вважав систему корисною у складних математичних обчисленнях та науці. Але за деякими даними, до його пропозиції про двійкову систему числення, в Китаї з'явився настінний напис, який розшифровувався при використання двійкового коду. На написі були зображені довгі та короткі палички. Припускаючи, що це довга 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 | Латинська літера |
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
Всім відомо, що комп'ютери можуть виконувати обчислення з великими групами даних на великій швидкості. Але не всі знають, що ці дії залежать від двох умов: є чи ні струм і яка напруга.
Як комп'ютер примудряється обробляти таку різноманітну інформацію?
Секрет полягає у двійковій системі обчислення. Всі дані надходять у комп'ютер, представлені у вигляді одиниць і нулів, кожному з яких відповідає один стан електропроводу: одиницям - висока напруга, нулям - низька або одиницям - наявність напруги, нулям - його відсутність. Перетворення даних у нулі та одиниці називається двійковою конверсією, а остаточне їх позначення – двійковим кодом.
У десятковому позначенні, заснованому на десятковій системі обчислення, яка використовується в повсякденному житті, числове значення представлене десятьма цифрами від 0 до 9, і кожне місце в числі має цінність у десять разів вищу, ніж місце праворуч від нього. Щоб уявити число більше дев'яти в десятковій системі обчислення, його місце ставиться нуль, але в наступне, більш цінне місце зліва - одиниця. Так само в двійковій системі, де використовуються тільки дві цифри - 0 і 1, кожне місце вдвічі цінніше, ніж місце праворуч від нього. Таким чином, у двійковому коді тільки нуль і одиниця можуть бути зображені як одномісні числа, і будь-яке число більше одиниці вимагає вже два місця. Після нуля і одиниці наступні три двійкові числа це 10 (читається один-нуль) і 11 (читається один-один) і 100 (читається один-нуль). 100 двійкової системи еквівалентно 4 десятковій. На верхній таблиці праворуч показані інші двійково-десяткові еквіваленти.
Будь-яке число може бути виражене у двійковому коді, просто воно займе більше місця, ніж у десятковому позначенні. У двійковій системі можна записати і абетку, якщо за кожною літерою закріпити певне двійкове число.
Дві цифри на чотири місця
16 комбінацій можна скласти, використовуючи темні та світлі кулі, комбінуючи їх у наборах з чотирьох штук. див. верхню таблицю (стор. 27). Навіть із двома видами куль у двійковій системі можна побудувати нескінченну кількість комбінацій, просто збільшуючи число кульок у кожній групі - чи кількість місць у числах.
Найменша одиниця в комп'ютерній обробці, біт - це одиниця даних, яка може мати одну з двох можливих умов. Наприклад, кожна з одиниць і нулів (праворуч) означає 1 біт. Біт можна уявити й іншими способами: наявністю або відсутністю електричного струму, дірочкою та її відсутністю, напрямом намагнічування вправо чи вліво. Вісім бітів становлять байт. 256 можливих байтів можуть представити 256 символів та символів. Багато комп'ютерів обробляють байт даних одночасно.
Двійкова конверсія. Чотирьохцифровий двійковий код може подати десяткові числа від 0 до 15.
Коли двійковий код використовується для позначення літер алфавіту або пунктуаційних знаків, потрібні кодові таблиці, в яких зазначено, який код символу відповідає. Складено декілька таких кодів. Більшість ПК пристосовані під семицифровий код, що називається ASCII, або американський стандартний код для інформаційного обміну. На таблиці справа показані коди ASCII для англійського алфавіту. Інші коди призначені для тисяч символів та алфавітів інших мов світу.
Частина таблиці коду ASCII
Комп'ютери не розуміють слів і цифр, як це роблять люди. Сучасне програмне забезпечення дозволяє кінцевому користувачеві ігнорувати це, але на найнижчих рівнях ваш комп'ютер оперує двійковим електричним сигналом, який має лише два стани: є струм чи немає струму Щоб "зрозуміти" складні дані, ваш комп'ютер повинен закодувати їх у двійковому форматі.
Двійкова система ґрунтується на двох цифрах – 1 та 0, відповідних станах включення та вимикання, які ваш комп'ютер може зрозуміти. Ймовірно, ви знайомі з десятковою системою. Вона використовує десять цифр - від 0 до 9, а потім переходить до наступного порядку, щоб сформувати двоцифрові числа, причому цифра з кожного наступного порядку в десять разів більша, ніж попередня. Двійкова система аналогічна, причому кожна цифра вдвічі більша, ніж попередня.
У двійковому вираженні перша цифра дорівнює 1 з десяткової системи. Друга цифра дорівнює 2, третя – 4, четверта – 8, тощо – подвоюється щоразу. Додавання всіх цих значень дасть вам число у десятковому форматі.
1111 (у двійковому форматі) = 8 + 4 + 2 + 1 = 15 (у десятковій системі)
Облік 0 дає 16 можливих значень для чотирьох двійкових бітів. Перейдіть на 8 біт, і ви отримаєте 256 можливих значень. Це займає набагато більше місця для представлення, оскільки чотири цифри у десятковій формі дають нам 10 000 можливих значень. Звичайно, бінарний код займає більше місця, але комп'ютери розуміють двійкові файли набагато краще, ніж десяткову систему. І для деяких речей, таких як логічна обробка, двійковий код кращий за десятковий.
Слід сказати, що є ще одна базова система, яка використовується в програмуванні: шістнадцяткова. Хоча комп'ютери не працюють у шістнадцятковому форматі, програмісти використовують її для подання двійкових адрес у форматі, що читається, при написанні коду. Це з тим, що дві цифри шістнадцяткового числа можуть бути цілий байт, тобто замінюють вісім цифр у двійковому форматі. Шістнадцяткова система використовує цифри 0-9, а також літери від A до F, щоб отримати додаткові шість цифр.
Коротка відповідь: апаратне забезпечення та закони фізики. Кожен символ у вашому комп'ютері є електричним сигналом, і в перші дні обчислень вимірювати електричні сигнали набагато складніше. Було розумніше розрізняти лише «включений» стан, представлений негативним зарядом, і «вимкнений» стан, представлений позитивним зарядом.
Для тих, хто не знає, чому "вимкнено" представлено позитивним зарядом, це пов'язано з тим, що електрони мають негативний заряд, а більше електронів - більше струму з негативним зарядом.
Таким чином, ранні комп'ютери розміром із кімнату використовували двійкові файлидля створення своїх систем, і хоча вони використовували більш старе, громіздке обладнання, вони працювали на тих же фундаментальних принципах. Сучасні комп'ютери використовують так званий, транзистор для виконання розрахунків із двійковим кодом.
Ось схема типового транзистора:
По суті, він дозволяє струму текти від джерела до стоку, якщо у воротах є струм. Це формує двійковий ключ. Виробники можуть створювати ці транзистори неймовірно малими – аж до 5 нанометрів або розміром дві нитки ДНК. Це те, як працюють сучасні процесори, і навіть вони можуть страждати від проблем з розрізненням включеного та вимкненого стану (хоча це пов'язано з їх нереальним молекулярним розміром, схильним до дивностям квантової механіки).
Тому ви можете подумати: «Чому лише 0 та 1? Чому б не додати ще одну цифру? Хоча частково це пов'язано з традиціями створення комп'ютерів, додавання ще однієї цифри означало б необхідність виділяти ще один стан струму, а не тільки «вимкнений» або «включений».
Проблема тут у тому, що якщо ви хочете використовувати кілька рівнів напруги, вам потрібен спосіб легко виконувати обчислення з ними, а сучасне апаратне забезпечення, здатне на це, не є життєздатним як заміна двійкових обчислень. Наприклад, існує так званий, потрійний комп'ютер, Розроблений в 1950-х роках, але розробка на тому і припинилася. Тернарна логіка більш ефективна, ніж двійкова, але поки що немає ефективної заміни бінарного транзистора або, принаймні, немає транзистора настільки ж крихітних масштабів, що й двійкові.
Причина, через яку ми не можемо використовувати потрійну логіку, полягає в тому, як транзистори з'єднуються в комп'ютері і як вони використовуються для математичних обчислень. Транзистор отримує інформацію на два входи, виконує операцію та повертає результат на один вихід.
Таким чином, бінарна математика простіше для комп'ютера, ніж будь-що ще. Двійкова логіка легко перетворюється на двійкові системи, причому True і False відповідають станам Вкл і Вимк .
Бінарна таблиця істинності, що працює на двійковій логіці, матиме чотири можливі виходи для кожної фундаментальної операції. Але оскільки потрійні ворота використовують три входи, потрійна таблиця істинності мала б 9 або більше. У той час, як бінарна система має 16 можливих операторів (2^2^2), трійкова система мала б 19683 (3^3^3). Масштабування стає проблемою, оскільки, хоча трійкість ефективніша, вона також експоненційно складніша.
Хто знає?У майбутньому ми цілком можливо побачимо трійчасті комп'ютери, оскільки бінарна логіка зіткнулася з проблемами мініатюризації. Поки що світ продовжуватиме працювати в двійковому режимі.
Термін «бінарний» за змістом – що складається із двох частин, компонентів. Таким чином бінарні коди це коди, які складаються тільки з двох символьних станів, наприклад чорний або білий, світлий або темний, провідник або ізолятор. Бінарний код у цифровій техніці це спосіб представлення даних (чисел, слів та інших) у вигляді комбінації двох знаків, які можна позначити як 0 та 1. Знаки чи одиниці БК називають бітами. Одним з обґрунтувань застосування БК є простота та надійність накопичення інформації в якомусь носії у вигляді комбінації всього двох його фізичних станів, наприклад у вигляді зміни або сталості світлового потоку при зчитуванні з оптичного кодового диска.
Існують різні можливості кодування інформації.
Двійковий код
У цифровій техніці спосіб представлення даних (чисел, слів та інших) як комбінації двох знаків, які можна позначити як 0 і 1. Знаки або одиниці ДК називають бітами.
Одним з обґрунтувань застосування ДК є простота і надійність накопичення інформації в якомусь носії у вигляді комбінації всього двох його фізичних станів, наприклад у вигляді зміни або сталості магнітного потоку в даному осередку носія магнітного запису.
Найбільше, яке може бути виражене двійковим кодом, залежить кількості використовуваних розрядів, тобто. від кількості бітів у комбінації, що виражає число. Наприклад, для вираження числових значень від 0 до 7 достатньо мати 3-розрядний або 3-бітовий код:
числове значення | двійковий код |
0 | 000 |
1 | 001 |
2 | 010 |
3 | 011 |
4 | 100 |
5 | 101 |
6 | 110 |
7 | 111 |
Звідси видно, що з числа більше 7 при 3-разрядном коді немає кодових комбінацій з 0 і 1.
Переходячи від чисел до фізичних величин, сформулюємо наведене вище твердження в більш загальному вигляді: найбільша кількість значень m будь-якої величини (температури, напруги, струму та ін.), яка може бути виражена двійковим кодом, залежить від числа використовуваних розрядів n як m= 2n. Якщо n=3, як у розглянутому прикладі, отримаємо 8 значень, включаючи провідний 0.
Двійковий код є багатокроковим кодом. Це означає, що з переході з одного становища (значення) в інше можуть зміняться кілька біт одночасно. Наприклад число 3 у двійковому коді = 011. Число ж 4 у двійковому коді = 100. Відповідно при переході від 3 до 4 змінюють свій стан на протилежний усі 3 біти одночасно. Зчитування такого коду з кодового диска призвело б до того, що через неминучі відхилення (толеранці) при виробництві кодового диска зміна інформації від кожної з доріжок окремо ніколи не відбудеться одночасно. Це, у свою чергу, призвело б до того, що при переході від одного числа до іншого короткочасно буде видано неправильну інформацію. Так при вищезгаданому переході від числа 3 до 4 дуже можлива короткочасна видача числа 7 коли, наприклад, старший біт під час переходу змінив своє значення трохи раніше ніж інші. Щоб уникнути цього, застосовується так званий однокроковий код, наприклад, так званий Грей-код.
Код Грею
Грей-код є так званим однокроковим кодом, тобто. при переході від одного числа до іншого завжди змінюється лише якийсь один із усіх біт інформації. Похибка при зчитуванні інформації з механічного кодового диска при переході від одного числа до іншого призведе лише до того, що перехід від одного положення до іншого буде лише трохи зміщений за часом, проте видача абсолютно невірного значення кутового положення при переході від одного положення до іншого виключається повністю .
Перевагою Грей-коду є його здатність дзеркального відображення інформації. Так, інвертуючи старший біт можна простим чином змінювати напрямок рахунку і таким чином підбирати до фактичного (фізичного) напрямку обертання осі. Зміна напряму рахунку таким чином може легко змінюватися керуючи так званим входом Complement. Значення, що видається, може таким чином бути зростаючим або спадаючим при тому самому фізичному напрямку обертання осі.
Оскільки інформація, виражена в Грей-коді, має суто кодований характер не несучої реальної числової інформації, він повинен перед подальшою обробкою спершу перетворений на стандартний бінарний код. Здійснюється це за допомогою перетворювача коду (декодера Грей-Бінар), який на щастя легко реалізується за допомогою ланцюга з логічних елементів, що «виключає або» (XOR) як програмним так і апаратним способом.
Відповідність десяткових чисел у діапазоні від 0 до 15 двійкового коду та коду Грея
Двійкове кодування | Кодування за методом Грею |
||||
Десятковий код |
Двійкове значення | Шестнадц. значення | Десятковий код | Двійкове значення | Шестнадц. значення |
0 | 0000 | 0h | 0 | 0000 | 0h |
1 | 0001 | 1h | 1 | 0001 | 1h |
2 | 0010 | 2h | 3 | 0011 | 3h |
3 | 0011 | 3h | 2 | 0010 | 2h |
4 | 0100 | 4h | 6 | 0110 | 6h |
5 | 0101 | 5h | 7 | 0111 | 7h |
6 | 0110 | 6h | 5 | 0101 | 5h |
7 | 0111 | 7h | 4 | 0100 | 4h |
8 | 1000 | 8h | 12 | 1100 | Ch |
9 | 1001 | 9h | 13 | 1101 | Dh |
10 | 1010 | Ah | 15 | 1111 | Fh |
11 | 1011 | Bh | 14 | 1110 | Eh |
12 | 1100 | Ch | 10 | 1010 | Ah |
13 | 1101 | Dh | 11 | 1011 | Bh |
14 | 1110 | Eh | 9 | 1001 | 9h |
15 | 1111 | Fh | 8 | 1000 | 8h |
Перетворення коду Грея на звичний бінарний код можна здійснити, використовуючи просту схему з інверторами та логічними елементами “виключне або” як показано нижче:
Код Gray-Excess
Звичайний однокроковий Грей-код підходить для дозволів, які можуть бути представлені у вигляді числа зведеного в ступінь 2. У випадках, де треба реалізувати інші дозволи зі звичайного Грей-коду, вирізається і використовується середня його ділянка. Таким чином зберігається «однокроковість» коду. Однак числовий діапазон починається не з нуля, а зміщується певне значення. При обробці інформації від сигналу, що генерується, віднімається половина різниці між початковим і редукованим дозволом. Такі дозволи, як, наприклад, 360? для вираження кута часто реалізуються цим способом. Так 9-бітний Грей-код рівний 512 кроків, урізаний з обох сторін на 76 кроків дорівнюватиме 360 °.