десяткової
Мета: створити функцію в Python для перетворення з десяткової в двійкову і за допомогою розширення на будь-яку іншу базу.

Перетворення десяткового числа в двійкове не є загадкою в Python:

Навіть зворотний процес, від двійкового до десяткового, простий:

Але грація, коли людина вчиться програмувати, полягає в спробі розвинути шосте почуття алгоритмічний, часто нехтувана грань.

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

Розкриття основного алгоритму часто передбачає виконання завдання вручну приділяючи пильну увагу нашим психічні процеси, перетворити їх на слова і перетворити їх пізніше на інструкції власна мова програмування.

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

У школі нас вчать (або, принаймні, вчили) процедурі перетворення цілого додатного числа в десятковій основі в двійкову:

Ділимо число на два і записуємо залишок від ділення. Ми беремо коефіцієнт і ділимо його на два, відзначаючи новий залишок. Ми беремо новий коефіцієнт і продовжуємо ту саму операцію, поки не зможемо продовжувати, оскільки фактор вже менший за два (один, у двійкових перетвореннях). Потім беремо цей коефіцієнт (один) і додаємо до нього, у зворотному порядку появи, усі залишки, які ми записували по дорозі.

Перетворимо, наприклад, 81 у двійковий формат:

Ми більше не можемо ділити на два, оскільки коефіцієнт один. Ми беремо цей фактор разом із усіма залишками у зворотному порядку і знаходимо 81, виражене у двійковому вигляді:

1010001

Наш алгоритм підійде точно так само.

Двійкова змінна - це рядок, який накопичує кожен залишок. Спостерігайте за його побудовою, додаючи ліворуч кожен новий відпочинок.

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

Побачимо цю функцію в дії:

Для перетворення на будь-яку іншу базу процедура точно така ж, за винятком того, що замість цілочисельного ділення на два ми робимо це в новій базі.

А тепер перетворення в восьмеричну:

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

Запропонована вправа 1: створити функцію, яка перетворює десяткове число на базу 16 (шістнадцяткове). Вам знадобиться своєрідна таблиця, яка перетворює результати залишку 10, 11, 12, ..., 15 в A, B, C,…, F відповідно.

Пропонована вправа 2: створити функцію, яка перетворює з двійкової в десяткову.

Запропонована вправа 3: створити функцію, яка перетворює число, виражене в будь-якій іншій основі, у десяткове.

Хав'єр Монтеро Габарро

Текст цієї статті підлягає ліцензії Creative Commons цього типу CC-BY-NC-ND (підтвердження, некомерційне, без похідної роботи, 3,0 непідказане)

Клуб самоучок

Дивіться повний індекс статей, пов’язаних з Python.