Мета: створити функцію в 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.
- Нульова бюджетна програма жорсткої економії для схуднення та збільшення розміру штату - Аль Калор
- Нагороди "Оскар" Джаред Лето жив із хворим на ВІЛ, щоб готуватися до участі в клубі покупців Далласа
- Mediasur виробляє програму; Вага; для Aragуn Televisiуn після його успіху в Canal Sur
- Зміцнювальна програма для схуднення - Атлантафорт
- Програма вправи для ходьби для схуднення