Системи числення у Python
На цьому уроці ми зануримося у системи числення у Python. Ви навчитеся переводити у двійкову, вісімкову чи шістнядцяткову систему без будь-яких проблем. А ще ви дізнаєтеся купу цікавих і веселих фактів про все на світі, звісно, якщо зможете перевести числа з цих фактів у правильну систему числення.
Як перевести число з десяткової системи числення у двійкову, вісімкову чи шістнадцяткову у Python програмах
Ми з вами звикли до десяткової системи числення, але комп’ютери для своєї роботи використовують інші системи.
Двійкова система числення використовується для запису будь-яких даних у комп’ютері на низкому рівні. Комп’ютер дуже гарно розуміє два сигнали: вкл (ON) і викл (OFF), для їх позначення використовуються 1 та 0. Щоб зрозуміти, як комп працює з цими сиглналами, уявіть собі кабелі , які знаходяться в середині комп’ютера. До кожного з цих кабелів може бути підключена напруга вкл/ON/1 або ні викл/OFF/0. Щоб записати число чи букву у комп’ютер його перекодовують у двійковий код.
Наприклад, число 19 у двійковій системі числення буде виглядати як 10011. А літера Q буде мати такий код 01010001.
Зараз всі комп’ютери використовують двійкову систему числення, хоча вже не один рік ходять чутки про перехід на трійкову чи навіть 4-кову систему, але за рівень чуток це не виходить. Всі ІТ-шники з пелюшок вчаться переводити числа з десякової у двійкову систему, щоб зрозуміти, як працюють комп’ютери.
Вісімкова система числення – не сильно розповсуджена, але використовується у Linux та Unix-подібних системах для позначення доступу до файлу. До неї входять такі числа : 0,1,2,3,4,5,6,7
Шістнадцяткова система числення – використовується для кодування кольорів та для кодів помилок у багатьох програмах. До неї входять такі числа : 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F.
Студентів-ітшників вчать переводити з систему в систему вручну, але для нас за все потурбується Python. Для переведення в інші системи числення використовуються такі функції:
bin(x) – перетворення цілого числа у двійковий рядок.
hex(х) – перетворення цілого числа в шістнадцятковий рядок.
oct(х) – перетворення цілого числа у вісімковий рядок.
print(bin(100))
print(oct(100))
print(hex(100))
1: Нижче подані деякі факти. Переведіть числа з тексту в усі системи числення.
Комп’ютерну мишу вигадав Дуглас Енгельбарт у 1964 році.
1024 гігабайти дорівнюють 1 терабайту
Переводимо число з двійкової, вісімкової чи шістнадцяткової системи числення в десяткову.
int([object], [основа системи числення]) – функція для переводу цілого числа з однієї системи числення у іншу. За замовчанням система числення десяткова, але можна задати будь-яку основу від 2 до 36 включно.
2: Давайте переведемо число з цього факту в 10-кову систему.
Середній рівень IQ у світі становить 0b1100100.
print(int('0b1100100',2))
3: Почитайте факти з таблички. Оберіть по одному на кожну систему числення і переведіть подані числа в в 10-кову систему.
(Якщо число починається з 0b – це двійковій запис,
Якщо число починається з 0o– це вісімковий запис,
Якщо число починається з 0х – це 16-ковий запис)
0b11110000 кульок з гелієм треба, щоб підняти в повітря одного кота середніх розмірів
Блоха може стрибнути на висоту, яка перевищує її власний зріст у 0o202 разів. Якби блоха була людського зросту, то могла б стрибнути на 0o346 м.
У середньому людина бачить понад 0x5b4 снів щороку. Більшість наших снів ми просто не запам’ятаємо, тому вважаємо, що нам нічого не сниться.
Щодня у світі 0o64570 дерев йде лише на виготовлення туалетного паперу.
Законодавство США допускало відправлення дітей поштою до 0o3571 року.
Пластик повністю розкладається у землі за 0x1c2 років, а скло – за 0xfa0 років.
В Антарктиді існує єдина річка – Онікс, вона тече лише 0o74 днів на рік.
Найдовший політ курки тривав 0b1101 секунд.
Щодня 0x3c людей стають мільйонерами.
Середня хмара важить близько 0b111110100 тонн, стільки ж важать 0b1010000 слонів.
Щоб зарядити один iPhone треба 0b1001010011 апельсинів
Найстаріше дерево у світі (секвоя) знаходиться в США, штат Каліфорнія. Його вік – 0x12eb роки.
4: Переведіть в двійкову систему всі перші 100 чисел. Виведіть їх на екран в форматі:
Коди символів
Код символу можна визначити за допомогою функції ord.
Знайти символ за його кодом можна за допомогою chr
print (ord('c'))
print (chr(99))
Отримаємо:
99
c
5: Пригадайте літеру, яка в англійській і українській мові пишеться однаково (наприклад, а). Виведіть на екран коди таких символів:
- код для великої і маленької літери англійського алфавіту
- код для великої і маленької літери українського алфавіту
- код для якогось спецсимволу (наприклад @)
6: Запишіть у змінну myString слово або фразу (будь-якою мовою). Закодуйте кожну букву у фразі (виведіть код букви на екран.)
Підказка:
for symbol in myString:
#symbol - буде містити одну літеру.
Додаткові завдання на урок: системи числення у Python
7: Запишіть в вісімковій системі всі числа від 111 до 222.
8: Запишіть в 16-ковій системі всі парні числа від 6666 до 7777.
9: У цих списках зашифровані назви тваринок. Розгадайте, які тваринки були зашифровані.
animal1=[1031 , 1078, 1072, 1095, 1086, 1082 ]
animal2=[1082, 1080, 1090]
animal3=[1040, 1082, 1091, 1083, 1072]
Підказка : Використай for i in animal1:
10: На сайті https://htmlcolorcodes.com/color-picker/ оберіть 2 своїх улюблених кольори. Запишіть їх 16-ковий код у програму (поряд з ришіткою, наприклад для червоного це FF0000). Переведіь це число в 10-кову, 2-ву та 8-ву систему.
💻1️⃣0️⃣1️⃣💻
👩– А чого з Максимом посварилися ?
🤦♀️– Я зла на нього. Казав, я тобі на день народження 101 троянду подарую. Я вже очікувала величезний букет, а він подарував лише 5 троянд. На моє питання – а де 101 ? – відповідає, що у двійковому коді 101 то п’ять. Айтішник…
Домашня робота
1: Переведи день, місяць і рік свого народження у всі системи числення і виведіть на екран в форматі:
10-кова: Я народилася 9 числа 2 місяця 2010 року
2-кова: Я народилася 0b1001 числа 0b10 місяця 0b11111011010 року
8-кова: Я народилася 0o11 числа 0o2 місяця 0o3732 року
16-кова: Я народилася 0x9 числа 0x2 місяця 0x7da року
2: Переведіть цифри у відповідні системи (текст додавати в програму не треба):
червоні цифри з 2-кової в 10-ву систему (не забудьта про префікс для двійкових чисел)
зелені з 8-кової в 10-ву систему
сині з 16-кової в 10-ву систему
Було їй 1100 років,
Вона ходила на уроки
До 110-го аж класу,
Носила 1000 зошитів щоразу.
Крокуючи десятком ніг,
Вона ходила вздовж доріг.
Рук, вух, очей по 10 мала,
І все, що поруч, помічала.
Коли виходила гуляти,
За нею бігло цуценятко.
І цей її 100-ногий друг
Мав один хвіст і 10 вух.
Все дуже дивним тут здається,
Нехай же відповідь дадуть:
У чому ж тут суть?
День програміста святкується в 0b100000000 день року (0o15 вересня, у високосний рік на день раніше). Вибір числа 0o400 не випадковий – воно виходить від виведення двійки у восьму ступінь. Саме таку кількість чисел можна виразити за допомогою одного восьмирозрядного байта
Максимальний рекорд, зареєстрований в грі Pac-Man, становить 0x32dcf0 очок.
3: Розшифруйте назву кольору, про який ідеться в тексті і зашифруйте свій улюблений колір так само:
Шифр: 118, 105, 111, 108, 101, 116
До середини 19 століття ***** пігмент добували виключно з рідкісних молюсків, що мешкали на ліванському узбережжі. Переробивши 10 тис. молюсків, вдавалося отримати близько 70 г барвника. Як ви розумієте, це був дуже трудомісткий та дорогий процес.
Не дивно, що *** вважався королівським кольором, оскільки коштував більше за золото. Відповідно, витрачати такий цінний ресурс на прапори, які цілодобово висять просто неба і швидко починають вимагати заміни, нікому й на думку не спадало, тому цей колір майже відсутній на прапорах різних країн. Але… Не без винятків
Ми все-таки знайшли два винятки із «**** правила»: у крихітній кількості **** представлений на прапорах Домініки та Нікарагуа.
Level Up!
1: Користувач має ввести число, для переводу в іншу систему числення (в 10-ковому вигляді) і систему числення. А програма має перевести це число у обрану систему числення
Приклад:
Введіть число для переводу: 1567
Введіть систему, в яку хочете перевести: 16
0x61f
2: Подивіться відео двійкову систему числення і дайте відповіді на питання нижче. (Відповіді можете написати у коментарі до програми. Можна писати відповіді українською або англійською).
Підказка: внизу справа є кнопка ⚙️, яка дозволяє включити субтитри (є і українські). Також через неї можна виставити повільнішу швидкість відтворення.
- What represents the number 1 in binary? What about the number 0?
- What is a bit?
- In the decimal system, number positions are 1, 10, 100, 1000. What positions does a binary number have?
- How many wires do we need to store numbers up to 4 billion?
- How does a computer store images?
3: Напишіть програму, яка кодує число виводячи замість кожної букви наступний символ за абеткою
Закодувати слово: Абетка
Ваш код: Бвжулб
Готові до наступних кроків ? Тисніть тут, щоб подивитися список уроків.