1. Порядковый счет в различных системах счисления.
В современной жизни мы используем позиционные системы счисления, то есть системы, в которых число, обозначаемое цифрой, зависит от положения цифры в записи числа. Поэтому в дальнейшем мы будем говорить только о них, опуская термин «позиционные».
Для того чтобы научиться переводить числа из одной системы в другую, поймем, как происходит последовательная запись чисел на примере десятичной системы.
Поскольку у нас десятичная система счисления, мы имеем 10 символов (цифр) для построения чисел. Начинаем порядковый счет: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Цифры закончились. Мы увеличиваем разрядность числа и обнуляем младший разряд: 10. Затем опять увеличиваем младший разряд, пока не закончатся все цифры: 11, 12, 13, 14, 15, 16, 17, 18, 19. Увеличиваем старший разряд на 1 и обнуляем младший: 20. Когда мы используем все цифры для обоих разрядов (получим число 99), опять увеличиваем разрядность числа и обнуляем имеющиеся разряды: 100. И так далее.
Попробуем сделать то же самое в 2-ной, 3-ной и 5-ной системах (введем обозначение для 2-ной системы,
для 3-ной и т.д.):
| 0 | 0 | 0 | 0 |
| 1 | 1 | 1 | 1 |
| 2 | 10 | 2 | 2 |
| 3 | 11 | 10 | 3 |
| 4 | 100 | 11 | 4 |
| 5 | 101 | 12 | 10 |
| 6 | 110 | 20 | 11 |
| 7 | 111 | 21 | 12 |
| 8 | 1000 | 22 | 13 |
| 9 | 1001 | 100 | 14 |
| 10 | 1010 | 101 | 20 |
| 11 | 1011 | 102 | 21 |
| 12 | 1100 | 110 | 22 |
| 13 | 1101 | 111 | 23 |
| 14 | 1110 | 112 | 24 |
| 15 | 1111 | 120 | 30 |
Если система счисления имеет основание больше 10, то нам придется вводить дополнительные символы, принято вводить буквы латинского алфавита. Например, для 12-ричной системы кроме десяти цифр нам понадобятся две буквы ( и
):
| 0 | 0 |
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 4 | 4 |
| 5 | 5 |
| 6 | 6 |
| 7 | 7 |
| 8 | 8 |
| 9 | 9 |
| 10 | |
| 11 | |
| 12 | 10 |
| 13 | 11 |
| 14 | 12 |
| 15 | 13 |
2.Перевод из десятичной системы счисления в любую другую.
Чтобы перевести целое положительное десятичное число в систему счисления с другим основанием, нужно это число разделить на основание. Полученное частное снова разделить на основание, и дальше до тех пор, пока частное не окажется меньше основания. В результате записать в одну строку последнее частное и все остатки, начиная с последнего.
Пример 1. Переведем десятичное число 46 в двоичную систему счисления.
Пример 2. Переведем десятичное число 672 в восьмеричную систему счисления.
Пример 3. Переведем десятичное число 934 в шестнадцатеричную систему счисления.
3. Перевод из любой системы счисления в десятичную.
Для того, чтобы научиться переводить числа из любой другой системы в десятичную, проанализируем привычную нам запись десятичного числа.
Например, десятичное число 325 – это 5 единиц, 2 десятка и 3 сотни, т.е.
Точно так же обстоит дело и в других системах счисления, только умножать будем не на 10, 100 и пр., а на степени основания системы счисления. Для примера возьмем число 1201 в троичной системе счисления. Пронумеруем разряды справа налево начиная с нуля и представим наше число как сумму произведений цифры на тройку в степени разряда числа:
Это и есть десятичная запись нашего числа, т.е.
Пример 4. Переведем в десятичную систему счисления восьмеричное число 511.
Пример 5. Переведем в десятичную систему счисления шестнадцатеричное число 1151.
4. Перевод из двоичной системы в систему с основанием «степень двойки» (4, 8, 16 и т.д.).
Для преобразования двоичного числа в число с основанием «степень двойки» необходимо двоичную последовательность разбить на группы по количеству цифр равному степени справа налево и каждую группу заменить соответствующей цифрой новой системы счисления.
Например, Переведем двоичное 1100001111010110 число в восьмеричную систему. Для этого разобьем его на группы по 3 символа начиная справа (т.к. ), а затем воспользуемся таблицей соответствия и заменим каждую группу на новую цифру:
Таблицу соответствия мы научились строить в п.1.
| 0 | 0 |
| 1 | 1 |
| 10 | 2 |
| 11 | 3 |
| 100 | 4 |
| 101 | 5 |
| 110 | 6 |
| 111 | 7 |
Т.е.
Пример 6. Переведем двоичное 1100001111010110 число в шестнадцатеричную систему.
| 0 | 0 |
| 1 | 1 |
| 10 | 2 |
| 11 | 3 |
| 100 | 4 |
| 101 | 5 |
| 110 | 6 |
| 111 | 7 |
| 1000 | 8 |
| 1001 | 9 |
| 1010 | A |
| 1011 | B |
| 1100 | C |
| 1101 | D |
| 1110 | E |
| 1111 | F |
5.Перевод из системы с основанием «степень двойки» (4, 8, 16 и т.д.) в двоичную.
Этот перевод аналогичен предыдущему, выполненному в обратную сторону: каждую цифру мы заменяем группой цифр в двоичной системе из таблицы соответствия.
Пример 7. Переведем шестнадцатеричное число С3A6 в двоичную систему счисления.
Для этого каждую цифру числа заменим группой из 4 цифр (т.к. ) из таблицы соответствия, дополнив при необходимости группу нулями вначале:
Благодарим за то, что пользуйтесь нашими материалами.
Информация на странице «Системы счисления. Перевод из одной системы в другую.» подготовлена нашими редакторами специально, чтобы помочь вам в освоении предмета и подготовке к экзаменам.
Чтобы успешно сдать необходимые и поступить в высшее учебное заведение или техникум нужно использовать все инструменты: учеба, контрольные, олимпиады, онлайн-лекции, видеоуроки, сборники заданий.
Также вы можете воспользоваться другими материалами из разделов нашего сайта.
Публикация обновлена:
07.02.2023
Перевод из любой системы счисления в любую
Для перевода чисел из одной системы счисления в любую другую, воспользуемся соответствующим алгоритмом. Важно заметить, что алгоритм перевода целых и дробных чисел будет отличаться.
Алгоритм перевода из произвольных чисел в любую систему счисления
- Перевести q-ичное число в десятичную систему счисления;
- Полученное десятичное число перевести в требуемую систему.
Подробно о переводе в десятичную систему смотрите на этой странице, о переводе из десятичной в q-ричную- здесь. Для целостного понимания, разберем несколько примеров, но для начала вспомним алфавиты в популярных системах счисления:
| Основание | Название | Алфавит |
|---|---|---|
| 2 | Двоичная | 0, 1 |
| 8 | Восьмеричная | 0, 1, 2, 3, 4, 5, 6, 7 |
| 10 | Десятичная | 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 |
| 16 | Шестнадцатеричная | 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F |
Перевод целого q-ичного числа в систему счисления с новым основанием
Пример 1: перевести число 1101100 из двоичной в троичную систему.
Как было сказано выше, необходимо сначала перевести число в десятичное, а полученный ответ в троиную. Решение будет выглядеть следующим образом:
Для перевода шестнадцатеричного числа 1a316 в десятичную систему, воспользуемся формулой:
An = an-1 ∙ qn-1 + an-2 ∙ qn-2 + ∙∙∙ + a0 ∙ q0
Отсюда:
11011002=1 ∙ 26 + 1 ∙ 25 + 0 ∙ 24 + 1 ∙ 23 + 1 ∙ 22 + 0 ∙ 21 + 0 ∙ 20 = 1 ∙ 64 + 1 ∙ 32 + 0 ∙ 16 + 1 ∙ 8 + 1 ∙ 4 + 0 ∙ 2 + 0 ∙ 1 = 64 + 32 + 0 + 8 + 4 + 0 + 0 = 10810
Таким образом:
11011002 = 10810
Полученное число 108 переведем из десятичной системы счисления в троичную. Для этого, осуществим последовательное деление на 3, до тех пор пока остаток не будет меньше чем 3.
Полученные остатки записываем в обратном порядке, таким образом:
10810=110003
Ответ: 11011002 = 110003.
Пример 2: перевести число 345 из шестеричной в восьмеричную систему.
Аналогично предыдущему примеру произведем вычисления:
3456=3 ∙ 62 + 4 ∙ 61 + 5 ∙ 60 = 3 ∙ 36 + 4 ∙ 6 + 5 ∙ 1 = 108 + 24 + 5 = 13710
Таким образом:
3456 = 13710
Полученное число 137 переведем из десятичной системы счисления в восьмеричную. Для этого, осуществим последовательное деление на 8, до тех пор пока остаток не будет меньше чем 8.
Полученные остатки записываем в обратном порядке, таким образом:
13710=2118
Ответ: 3456 = 2118.
Перевод любого дробного числа из одной системы в другую
Пример 3: перевести 231.20 из четверичной в семеричную систему счисления.
Общий смысл алгоритма перевода дробного числа, аналогичен алгоритму перевода целого, т.е. вначале переводим в десятичную, а затем в семеричную:
1. Для перевода числа 231.20 в десятичную систему воспользуемся формулой:
An = an-1 ∙ qn-1 + an-2 ∙ qn-2 + ∙∙∙ + a0 ∙ q0 + a-1 ∙ q-1 + ∙∙∙ + a-m ∙ q-m
Отсюда:
231.204=2 ∙ 42 + 3 ∙ 41 + 1 ∙ 40 + 2 ∙ 4-1 + 0 ∙ 4-2 = 2 ∙ 16 + 3 ∙ 4 + 1 ∙ 1 + 2 ∙ 0.25 + 0 ∙ 0.0625 = 32 + 12 + 1 + 0.5 + 0 = 45.510
Таким образом:
231.204 = 45.510
Обратите внимание! Формула перевода дробного числа в десятичную систему, очень похожа на формулу перевода целого, однако немного отличается.
2. Полученное число 45.5 переведем из десятичной системы счисления в семеричную. Т.к. полученное число содержит дробную часть, нам потребуется перевести вначале целую часть, а затем дробную. Таким образом необходимо:
- Перевести 45 в семеричную систему;
- Перевести 0.5 в семеричную систему;
2.1 Для того, чтобы перевести число 45 из десятичной системы счисления в 7-ую, необходимо осуществить последовательное деление на 7, до тех пор пока остаток не будет меньше чем 7.
Полученные остатки записываем в обратном порядке, таким образом:
4510=637
2.2 Для перевода десятичной дроби 0.5 в 7-ую систему, необходимо выполнить последовательное умножение дроби на 7, до тех пор, пока дробная часть не станет равной 0 или пока не будет достигнута заданная точность вычисления. Получаем:
0.5 ∙ 7 = 3.5 (3)
0.5 ∙ 7 = 3.5 (3)
0.5 ∙ 7 = 3.5 (3)
0.5 ∙ 7 = 3.5 (3)
0.5 ∙ 7 = 3.5 (3)
0.5 ∙ 7 = 3.5 (3)
0.5 ∙ 7 = 3.5 (3)
0.5 ∙ 7 = 3.5 (3)
0.5 ∙ 7 = 3.5 (3)
0.5 ∙ 7 = 3.5 (3)
0.5 ∙ 7 = 3.5 (3)
Ответом станет прямая последовательность целых частей произведения. Т.е.
0.510=0.333333333337
2.3. Осталось соединить переведенные части, таким образом:
45.510=63.333333333337
Ответ: 231.204 = 63.333333333337.
Оцените материал:
Загрузка…
Данный конвертер переводит числа между наиболее популярными системами счисления: десятичной, двоичной, восьмеричной, шестнадцатеричной.
Система счисления — это способ представления числа. Одно и то же число может быть представлено в различных видах. Например, число 200 в привычной нам десятичной системе может иметь вид 11001000 в двоичной системе, 310 в восьмеричной и C8 в шестнадцатеричной.
Для указания системы счисления при записи числа используется нижний индекс, который ставится после числа:
20010 = 110010002 = 3108 = C816
Кратко об основных системах счисления
Десятичная система счисления. Используется в повседневной жизни и является самой распространенной. Все числа, которые нас окружают представлены в этой системе. В каждом разряде такого числа может использоваться только одна цифра от 0 до 9.
Двоичная система счисления. Используется в вычислительной технике. Для записи числа используются цифры 0 и 1.
Восьмеричная система счисления. Также иногда применяется в цифровой технике. Для записи числа используются цифры от 0 до 7.
Шестнадцатеричная система счисления. Наиболее распространена в современных компьютерах. При помощи неё, например, указывают цвет. #FF0000 — красный цвет. Для записи числа используются цифры от 0 до 9 и буквы A,B,C,D,E,F, которые соответственно обозначают числа 10,11,12,13,14,15.
Перевод в десятичную систему счисления
Преобразовать число из любой системы счисления в десятичную можно следующим образом: каждый разряд числа необходимо умножить на Xn, где X — основание исходного числа, n — номер разряда. Затем суммировать полученные значения.
abcx = (a*x2 + b*x1 + c*x0)10
Примеры:
5678 = (5*82 + 6*81 + 7*80)10 = 37510
1102 = (1*22 + 1*21 + 0*20)10 = 610
A516 = (10*161 + 5*160)10 = 16510
Перевод из десятичной системы счисления в другие
Делим десятичное число на основание системы, в которую хотим перевести и записываем остатки от деления. Запишем полученные остатки в обратном порядке и получим искомое число.
Переведем число 37510 в восьмеричную систему:
375 / 8 = 46 (остаток 7)
46 / 8 = 5 (остаток 6)
5 / 8 = 0 (остаток 5)
Записываем остатки и получаем 5678
Смотрите также
- Перевод из двоичной в десятичную
- Перевод из двоичной в восьмеричную
- Перевод из двоичной в шестнадцатеричную
- Перевод из десятичной в двоичную
- Перевод из десятичной в восьмеричную
- Перевод из десятичной в шестнадцатеричную
- Перевод из восьмеричной в двоичную
- Перевод из восьмеричной в десятичную
- Перевод из шестнадцатеричной в двоичную
- Перевод из шестнадцатеричной в десятичную
Перевод чисел из одной системы счисления
в другую составляет важную часть машинной
арифметики. Рассмотрим основные правила
перевода.
1. Для перевода
двоичного числа в десятичное необходимо
его записать в виде многочлена, состоящего
из произведений цифр числа и соответствующей
степени числа 2,
и вычислить по правилам десятичной
арифметики:
При переводе удобно пользоваться
таблицей степеней двойки:
Таблица 4. Степени числа 2
|
n |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
|
|
1 |
2 |
4 |
8 |
16 |
32 |
64 |
128 |
256 |
512 |
1024 |
Пример . Число
перевести
в десятичную систему счисления.
2. Для перевода
восьмеричного числа в десятичное
необходимо его записать в виде многочлена,
состоящего из произведений цифр числа
и соответствующей степени числа 8,
и вычислить по правилам десятичной
арифметики:
При переводе удобно пользоваться
таблицей степеней восьмерки:
Таблица 5. Степени числа 8
|
n |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
|
|
1 |
8 |
64 |
512 |
4096 |
32768 |
262144 |
Пример . Число
перевести
в десятичную систему счисления.
3. Для перевода
шестнадцатеричного числа в десятичное
необходимо его записать в виде многочлена,
состоящего из произведений цифр числа
и соответствующей степени числа 16,
и вычислить по правилам десятичной
арифметики:
При переводе удобно пользоваться
таблицей степеней числа 16:
Таблица 6. Степени числа 16
|
n |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
|
|
1 |
16 |
256 |
4096 |
65536 |
1048576 |
16777216 |
Пример . Число
перевести
в десятичную систему счисления.
4. Для перевода
десятичного числа в двоичную
систему его
необходимо последовательно делить на
2 до тех
пор, пока не останется остаток, меньший
или равный 1. Число в двоичной системе
записывается как последовательность
последнего результата деления и остатков
от деления в обратном порядке.
Пример. Число
перевести
в двоичную систему счисления.
5. Для перевода
десятичного числа в восьмеричную
систему его необходимо последовательно
делить на 8
до тех пор, пока не останется остаток,
меньший или равный 7.
Число в восьмеричной
системе записывается как
последовательность цифр
последнего результата деления
и остатков от деления в обратном порядке.
Пример. Число
перевести
в восьмеричную систему счисления.
6. Для перевода
десятичного числа в шестнадцатеричную
систему его необходимо последовательно
делить на 16
до тех пор, пока не останется остаток,
меньший или равный 15.
Число в шестнадцатеричной
системе записывается как
последовательность цифр
последнего результата деления
и остатков от деления в обратном порядке.
Пример. Число
перевести
в шестнадцатеричную систему счисления.
7. Чтобы
перевести число из двоичной системы в
восьмеричную, его нужно разбить на
триады (тройки цифр), начиная с младшего
разряда, в случае необходимости дополнив
старшую триаду нулями,
и каждую триаду заменить
соответствующей восьмеричной цифрой
(табл. 3).
Пример. Число
перевести
в восьмеричную систему счисления.
8. Чтобы
перевести число из двоичной системы в
шестнадцатеричную, его нужно разбить
на тетрады (четверки
цифр), начиная с младшего разряда, в
случае необходимости дополнив старшую
тетраду нулями,
и каждую тетраду заменить
соответствующей восьмеричной цифрой
(табл. 3).
Пример. Число
перевести
в шестнадцатеричную систему счисления.
9. Для перевода восьмеричного числа в
двоичное необходимо
каждую цифру заменить эквивалентной
ей двоичной триадой.
Пример. Число
перевести
в двоичную систему счисления.
10. Для перевода
шестнадцатеричного числа в двоичное
необходимо каждую цифру заменить
эквивалентной ей двоичной тетрадой.
Пример. Число
перевести
в двоичную систему счисления.
11. При переходе
из восьмеричной системы счисления в
шестнадцатеричную и обратно, необходим
промежуточный перевод чисел в
двоичную систему.
Пример 1. Число
перевести
в восьмеричную систему счисления.
Пример 2. Число
перевести
в шестнадцатеричную систему счисления.
3.6.
Контрольные вопросы. Системы
счисления
1. Что называется системой счисления?
2. На какие два типа можно разделить все
системы счисления?
3. Какие системы счисления называются
непозиционными? Почему? Приведите пример
такой системы счисления и записи чисел
в ней?
4. Какие системы счисления применяются
в вычислительной технике: позиционные
или непозиционные? Почему?
5. Какие системы счисления называются
позиционными?
6. Как изображается число в позиционной
системе счисления?
7. Что называется основанием системы
счисления?
8. Что называется разрядом в изображении
числа?
9. Как можно представить целое положительное
число в позиционной системе счисления?
10. Приведите пример позиционной системы
счисления.
11. Опишите правила записи
чисел в десятичной системе счисления:
а) какие символы образуют алфавит
десятичной системы счисления?
б) что
является основанием десятичной системы
счисления?
в) как изменяется вес
символа в записи числа в зависимости
от занимаемой позиции?
12. Какие числа можно использовать в
качестве основания системы счисления?
13. Какие системы счисления
применяются в компьютере для представления
информации?
14. Охарактеризуйте двоичную систему
счисления: алфавит, основание системы
счисления, запись числа.
15. Почему двоичная система счисления
используется в информатике?
16. Дайте характеристику
шестнадцатеричной системе счисления:
алфавит, основание, запись чисел.
Приведите примеры записи чисел.
17. По каким правилам выполняется сложение
двух положительных целых чисел?
18. Каковы правила выполнения арифметических
операций в двоичной системе счисления?
19. Для чего используется перевод чисел
из одной системы счисления в другую?
20. Сформулируйте правила перевода чисел
из системы счисления с основанием р в
десятичную систему счисления и обратного
перевода: из десятичной системы счисления
в систему счисления с основанием S.
Приведите примеры.
21. В каком случае для перевода
чисел из одной системы счисления (СС) в
другую может быть использована схема
Горнера вычисления значения многочлена
в точке? Каковы преимущества ее
использования перед другими методами?
Приведите пример.
22. Как выполнить перевод
чисел из двоичной СС в восьмеричную и
обратный перевод? Из двоичной СС в
шестнадцатеричную и обратно? Приведите
примеры. Почему эти правила так просты?
23. По каким правилам выполняется перевод
из восьмеричной в шестнадцатеричную
СС и наоборот? Приведите примеры.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
Excel для Microsoft 365 Excel для Microsoft 365 для Mac Excel для Интернета Excel 2021 Excel 2021 for Mac Excel 2019 Excel 2019 для Mac Excel 2016 Excel 2016 для Mac Excel 2013 Excel для iPad Excel для iPhone Excel для планшетов с Android Excel 2010 Excel 2007 Excel для Mac 2011 Excel для телефонов с Android Еще…Меньше
Система чисел является систематическим способом представления чисел символьными символами и использует базовое значение для удобной группировки чисел в сжатой форме. Самая распространенная система числов — десятичная, которая имеет базовое значение 10, и набор символов 0, 1, 2, 3, 4, 5, 6, 7, 8 и 9. Однако существуют и другие числовые системы, которые могут быть более эффективными для определенной цели. Например, так как на компьютерах используется логическое значение для вычислений и операций, для выполнения вычислений и операций используется двоичная числовая система, которая имеет базовое значение 2.
Microsoft Office Excel есть несколько функций, которые можно использовать для преобразования чисел в числовые системы и из них:
|
Система номеров |
Базовое значение |
Набор символьных знаков |
|
Двоичный |
2 |
0,1 |
|
Восьмеричном |
8 |
0, 1, 2, 3, 4, 5, 6, 7 |
|
Действительное. |
10 |
0, 1, 2, 3, 4, 5, 6, 7, 8 и 9 |
|
Шестнадцатеричный |
16 |
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F |
Для этого используйте функцию ДВ.В.Е.
|
|
Для этого используйте функцию ДВ.В.EX.
|
|
Для этого используйте функцию ДВ.В.ВЕХ.
|
|
Для этого используйте функцию DEC2BIN.
|
|
Для этого используйте функцию DEC2HEX.
|
|
Для этого используйте функцию DEC2OCT.
|
|
Для этого используйте функцию HEX2BIN.
|
|
Для этого используйте функцию HEX2DEC.
|
|
Для этого используйте функцию HEX2OCT.
|
|
Для этого используйте функцию ВОСЬМ.В.ДВ.
|
|
Для этого используйте функцию ВОСЬМ.В.Е.
|
|
Для этого используйте функцию ВОСЬМ.В.EX.
|
|
Нужна дополнительная помощь?
В данном материале мы рассмотрим встроенные возможности по переводу чисел в языке программирования Python, а также напишем универсальную функцию по их переводу.
Перевод чисел из десятичной системы счисления
Для перевода числа из десятичной системы счисления в двоичную можно воспользоваться оператором bin(). В качестве аргумента нужно передать значение в виде числа, а оператор вернет строку с двоичным числом. У результата также будет префикс 0b, указывающий на основание системы счисления.
| Python | Вывод |
|---|---|
number = 123 result = bin(number) print(result) |
>'0b1111011' |
Для перевода в восьмеричную систему счисления есть оператор oct(). Он также возвращает строку с восьмеричным числом и префиксом 0o.
| Python | Вывод |
|---|---|
number = 123 result = oct(number) print(result) |
>'0o173' |
При переводе в шестнадцатеричную систему счисления воспользуемся оператором hex(). Он вернет строку шестнадцатеричным числом и префиксом 0x
| Python | Вывод |
|---|---|
number = 123 result = hex(number) print(result) |
>'0x7b' |
Если же вам не нужен префикс у результата перевода, то всегда можно взять срез у полученной строки.
| Python | Вывод |
|---|---|
print(bin(123)[2:]) print(oct(123)[2:]) print(hex(123)[2:]) |
>'1111011' >'173' >'7b' |
А теперь напишем универсальную функцию convert_to() по переводу чисел из десятичной системы счисления в систему счисления в любым основанием. Наша функция будет ограничена только наличием символов в переводимой системе счисления.
Данная функция принимает три аргумента, два из которых обязательные. Это десятичное целое число number и основание переводимой системы счисления base. Третий аргумент upper служит для указания регистра вывода строки переведенного числа. По умолчанию он установлен в значение False.
def convert_to(number, base, upper=False):
digits = '0123456789abcdefghijklmnopqrstuvwxyz'
if base > len(digits): return None
result = ''
while number > 0:
result = digits[number % base] + result
number //= base
return result.upper() if upper else result
Во второй строке мы задаем переменную digits, содержащую набор символов цифр и букв английского языка. Она нам понадобится для составления символов переведенного числа на основании остатков.
В третьей строке мы проверяем основание переданной системы счисления на его длину. Если основание окажется больше, чем количество символов в нашей строке digits, то мы прекращаем выполнение функции через вызов оператора return и возвращаем None. Это такая своеобразная защита функции от неправильно переданных аргументов. Если мы попробуем перевести число в большую систему счисления по основанию, чем у нас есть символов для его записи, то мы его не сможем записать.
Дальше заведем переменную result для хранения результата работы функции и зададим ей значение в виде пустой строки. Теперь с помощью цикла с условием будем находить остаток от деления числа number на основание base, а также уменьшать number в base раз используя целочисленное деление.
Остаток от деления числа на основание переводимой системы счисления мы будем использовать как индекс для получения символа в строке digits и добавлять его к результату result. Добавлять это значение следует слева, т.к. самый первый остаток является самым правым разрядом. Цикл выполняется до тех пор, пока исходное значение переменной number больше нуля.
После завершения цикла мы вернем результат через вызов return. Для этого воспользуемся тернарным оператором и проверим наш третий аргумент. Если он будет в значении True, то для строки result вызовем строкой метод .upper() который заменит все прописные символы английского языка на строчные. Иначе, вернем результат как есть.
А теперь проверим работу нашей функции. Для этого попробуем перевести числа в 2ю, 8ю, 16ю, 32ю и 64ю системы счисления. Для перевода в 32ю систему счисления мы укажем третий необязательный аргумент upper и зададим ему значение True.
| Python | Вывод |
|---|---|
print(convert_to(123, 2)) print(convert_to(123, 8)) print(convert_to(123, 16)) print(convert_to(123, 32, upper=True)) print(convert_to(123, 64)) |
>'1111011' >'173' >'7b' >'3R' >None |
Перевод чисел в десятичную систему счисления
Для обратного перевода в десятичную систему счисления мы будем использовать оператор int(). Для этого передадим ему два аргумента, первый — это строка с числом в какой-то системе счисления, а второй — это основание системы счисления самого числа. По умолчанию для этого необязательного аргумента стоит значение равное 10.
В качестве самого числа нужно обязательно передать строку. Строка может содержать или само число или число с префиксом системы счисления.
Для перевода из двоичной системы счисления:
| Python | Вывод |
|---|---|
number = '11001' result = int(number, 2) print(result) |
>25 |
| Python | Вывод |
|---|---|
number = '0b11001' result = int(number, 2) print(result) |
>25 |
Для перевода из восьмеричной системы счисления:
| Python | Вывод |
|---|---|
number = '12367' result = int(number, 8) print(result) |
>5367 |
| Python | Вывод |
|---|---|
number = '0o12367' result = int(number, 8) print(result) |
>5367 |
И для перевода из шестнадцатеричной системы счисления:
| Python | Вывод |
|---|---|
number = '123f' result = int(number, 16) print(result) |
>4671 |
| Python | Вывод |
|---|---|
number = '0x123f' result = int(number, 16) print(result) |
>4671 |
В качестве второго аргумента мы можем передавать любое число в диапазоне от 2х до 36 включительно. Тем самым переводя число из любой системы счисления в десятичную.
| Python | Вывод |
|---|---|
number = '123z' result = int(number, 36) print(result) |
>49391 |











