Двійкова система для чайників
Я вирішив зробити серію постів з інформатики для чайників.
Якщо перший пост піде добре, то буде ще кілька в тому ж дусі.
Щоб провести хірургічну операцію, анатомію знати не обов'язково, але ось результати будуть непередбачувані. Точно так же, щоб програмувати, не обов'язково знати, як комп'ютер влаштований зсередини, але іноді таке незнання може призвести до несамовитим наслідків.
Основа основ сучасного комп'ютера - Двійкова система числення (2-СС). Звучить загрозливо. Щоб зрозуміти, що таке ДСС, і навчитися з нею працювати, треба вміти складати, множити і зводити числа в ступінь. Ок, даю шпаргалку.
Нехай у нас є якесь число. Припустимо, 5. І ми хочемо додати до нього інше число. Припустимо, 3. Як нам це зробити? Давайте, уявімо число 5 як п'ять паличок:
А число 3 як три палички:
Щоб скласти їх, спочатку намалюємо п'ять паличок, потім допишемо до них ще три:
Тепер перерахуємо - вийшло 8.
Даремно смієтеся! Коли вважаємо паличками - в Вікіпедії це називається (УВАГА! НЕНОРМОТІВНАЯ ЛЕКСИКА!) #xAB; Одинична непозиційних система числення з одиничним ваговим коефіцієнтом # xBB ;. Ну, або просто будемо називати унарна система числення (1-СС).
У звичайному житті ми (люди) користуємося десятиричної системи обчислення (10-СС). Вона так називається, тому що у нас є десять цифр. До того ж, вона ще й позиційний, що означає, що значення (вага) цифри залежить від її положення в запису числа, наприклад, в числах 2, 21 і 211 цифра 2 означає, відповідно, одиниці, десятки і сотні.
Десяткова система числення
Як ми складаємо в 10-СС? Наприклад, у стовпчик:
Спочатку складаємо одиниці: 2 + 9 = 11, тобто при складанні двох одиничних чіселок з'явився новий десяток. Ясна річ, що з них може з'явитися тільки один десяток, тому що найбільше, що можна скласти - це 9 + 9 = 18. Таким чином, розбиваємо складання на шматочки: замість 12 + 99 ми робимо 2 + 9 + 10 + 90, тобто одиниці і десятки (а потім і сотні) складаємо окремо один від одного:
12 + 99 = [розіб'ємо на розряди]
= (2 + 9) + (10 + 90) = [складемо перші розряди]
= 11 + (10 + 90) = [знову розіб'ємо на десятки і одиниці]
= (1 + 10) + (10 + 90) = [знову перегруппіруем, щоб відокремити десятки від одиниць]
= 1 + (10 + 10 + 90) = [складемо десятки]
= 1 + (110) = [розіб'ємо на сотні і десятки]
Ясно, що вийде 111, але давайте зупинимося і подивимося на цю отриману форму запису:
Фішка в тому, що будь-яке число можна представити як суму окремо одиниць, окремо десятків, сотень і т.д. наприклад:
564 = 500 + 60 + 4, 7031 = 7000 + 000 + 30 + 1
Особливість такого запису в тому, що ми бачимо у всіх розрядах одну значущу цифру (першу), всі наступні за нею цифри - це нулі. Запам'ятайте цей момент - це важливо.
При цьому замість того, щоб писати 1000, ми можемо написати 10 ^ 3 (тобто десять в третього ступеня, що можна розшифрувати як 10 * 10 * 10).
7000 = 7 * 1000 = 7 * 10 ^ 3
А все число 7031 можна розписати так:
7031 = 7 * 10 ^ 3 + 0 * 10 ^ 2 + 3 * 10 ^ 1 + 1 * 10 ^ 0
Нагадаю, що будь-яке число в нульовому ступені дає одиницю, і 10 ^ 0 = 1, а будь-яке число в першого ступеня дає саме себе 10 ^ 1 = 10. Ще нагадаю, що будь-яке число помножене на 0 дає 0, тобто 0 * 10 ^ 2 = 0.
Так ось, наша система числення називається десятковою саме завдяки цій десятці, яку в ступінь зводимо.
Короткий відступ. Любі мої! Не плутайте числа і цифри! Плутати цифри і числа - це як плутати букви і звуки. Цифра - це просто символ для запису чисел. А число - це абстрактна величина, зазвичай означає кількість чого-небудь. Думаю, все зрозуміли. )
Двійкова система числення
Тепер, поговоримо про 2-СС. Її особливість в тому, що в ній є всього 2 символу для запису чисел: 0 і 1. Що цікаво, при цьому будь-яке число, яке можна записати в 10-СС, так само можна записати і в 2-СС, і навіть в 1 -СС!
Двійкова система теж позиційна і відрізняється від десяткової тим, що в ній замість 10 в ступінь зводиться двійка, наприклад, число двійкове число 101101 можна прочитати так:
101101 = 1 * 2 ^ 5 + 0 * 2 ^ 4 + 1 * 2 ^ 3 + 1 * 2 ^ 2 + 0 * 2 ^ 1 + 1 * 2 ^ 0
= 32 + 0 + 8 + 4 + 0 + 1 = 45 (це вже в десятковій системі)
Тепер давайте поскладали в двійковій системі.
Почнемо з простого: 0 + 0 = 0, 1 + 0 = 1, 0 + 1 = 1
Нічого дивного, в 10-СС це точно так же виглядає.
Тепер складніше: 1 + 1 = 10
Ой! Чому десять.
А ось ніякі не ДЕСЯТЬ! Це число ДВА. Просто в двійковій запису.
Далі: 10 + 1 = 11
Ні. Це не десять плюс один! Це два плюс один! У 10-СС це виглядає так: 2 + 1 = 3, а в 1-СС так: || + | = |||. Ясно зрозуміло?
Ускладнюємо програму: 11 + 1 =?
Хм ... важкувато? Давайте спростимо! За тією ж схемою, що і 12 + 99. Не забуваємо, що все це в двійковій системі!
11 + 1 = [розіб'ємо на розряди]
= (10 + 1) + 1 = [перегруппіруем]
= 10 + (1 + 1) = [О! "1 + 1" складати вміємо!]
= 10 + 10 = [ну, тут просто спочатку ігноруємо нулі, складаємо 1 + 1 і потім приписуємо 0 до результату]
Ну, скільки можна. Це не СТО. Якщо те ж саме записати в 10-СС, то отримаємо: 3 + 1 = 4 Тобто це 100 в запису 2-СС - це ЧОТИРИ.
Ну, і для закріплення матеріалу складемо в 2-СС:
= (1000 + 100 + 00 + 1) + (1000 + 000 + 00 + 1)
= (1000 +1000) + (100 + 000) + (00 + 00) + (1 + 1)
= (10000) + (100) + (00 + 10)