Перевод числа в четверичную систему python

Перевод чисел в Python

В данной статье мы рассмотрим встроенные функции языка программирования Python по переводу чисел в различные системы счисления. А так же напишем универсальную функцию по переводу десятичных чисел в другие системы счисления.

Перевод чисел из десятичной системы счисления
Для перевода числа из десятичной системы счисления в двоичную можно воспользоваться оператором bin(). В качестве аргумента нужно передать значение в виде числа, а оператор вернет строку с двоичным числом. У результата также будет префикс 0b, указывающий на основание системы счисления.

number = 123 result = bin(number) print(result)

Для перевода в восьмеричную систему счисления есть оператор oct(). Он также возвращает строку с восьмеричным числом и префиксом 0o.

number = 123 result = oct(number) print(result)

При переводе в шестнадцатеричную систему счисления воспользуемся оператором hex(). Он вернет строку шестнадцатеричным числом и префиксом 0x

number = 123 result = hex(number) print(result)

Если же вам не нужен префикс у результата перевода, то всегда можно взять срез у полученной строки.

print(bin(123)[2:]) print(oct(123)[2:]) print(hex(123)[2:])

Так же выводить числа в других системах счисления можно используя f-строки и формат вывода. Для этого в строке, через символ : указываем буквы b – для двоичной, o – для восьмеричной и x – для шестнадцатеричной системы счисления.

n = 1984 print(f'Двоичное: ') print(f'Восьмеричное: ') print(f'Шестнадцатеричное: ')
Двоичное: 11111000000 Восьмеричное: 3700 Шестнадцатеричное: 7c0

А теперь напишем универсальную функцию 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() который заменит все прописные символы английского языка на строчные. Иначе, вернем результат как есть.

Читайте также:  Эффект заполнения кнопки css

А теперь проверим работу нашей функции. Для этого попробуем перевести числа в , , 16ю, 32ю и 64ю системы счисления. Для перевода в 32ю систему счисления мы укажем третий необязательный аргумент upper и зададим ему значение True.

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))

Перевод чисел в десятичную систему счисления
Для обратного перевода в десятичную систему счисления мы будем использовать оператор int(). Для этого передадим ему два аргумента, первый – это строка с числом в какой-то системе счисления, а второй – это основание системы счисления самого числа. По умолчанию для этого необязательного аргумента стоит значение равное 10.
В качестве самого числа нужно обязательно передать строку. Строка может содержать или само число или число с префиксом системы счисления.
Для перевода из двоичной системы счисления:

number = '11001' result = int(number, 2) print(result)
number = '0b11001' result = int(number, 2) print(result)

Для перевода из восьмеричной системы счисления:

Источник

Перевод чисел из десятичной системы в четверичную

Используя алгоритм перевода чисел из десятичной системы в четверичную(последовательно делить число на q, т.е. на основание СС) и цикл while, написать программу перевода числа -173 в 4 систему счисления. Результат вывести в двухбайтовом формате.
Срочно, пожалуйста.

Рекурсивный перевод чисел из десятичной системы счисления в шестнадцатеричную
Есть код для рекурсивного перевода чисел из десятичной системы счисления в шестнадцатеричную.

Перевод из десятичной системы в четверичную
Необходимо написать программу, переводящую целые числа из десятичной системы счисления в.

Перевод из десятичной в четверичную систему счисления
должен быть создан класс с цифрами арабскими и класс с четверичными. с арабскимим нет проблем а.

ЦитатаСообщение от 1LEX Посмотреть сообщение

Читайте также:  Python docx поля документа

Срочно не получится, так как питон Вы срочно не изучите. Поэтому консультировать Вас бесполезно. А делать за Вас работу, увы нет смысла.

уже есть начало, нужно только в двухбайтовый формат перевести, не знаю как.

n = int(input()) b = '' while n > 0: b = str(n % 4) + b n = n // 4 print(b)
>>> int('2231', 4) 173 >>> int('-2231', 4) -173

То есть Ваш код выдает модуль числа -173 в 4СС Результат Вашего кода нужно еще умножить на -1 .
Теперь по поводу

ЦитатаСообщение от 1LEX Посмотреть сообщение

Упоминание о байтовом формате говорит о том, что под число должно отводится 2 байта, даже если оно занимает меньше байт.
Как сделать это в шестнадцатеричной 0xXXX , восьмеричной 0oXXX, двоичной 0bXXXXXX формах записи (везде спереди стоит ноль) я знаю. Но есть ли в питоне четверичная форма записи, я не знаю, не встречал.
Само число занимает один байт, что бы разместить его в двух байтах нужно просто добавить спереди нулевой байт.
В двоичной форме записи это будет выглядеть так

>>> int('-0b10101101', 2) -173 >>> int('-0b0000000010101101', 2) -173

Добавлено через 11 минут
Может кто то знает о существовании в питоне четверичной формы записи? Если она существует, я бы дополнил этой информацией свою базу данных.

ЦитатаСообщение от 1LEX Посмотреть сообщение

что число нужно вывести как -00002231 . Но это уже осуществляется с помощью форматирования вывода на экран. Что подразумевается под данной фразой выясняйте у того, кто давал задание.

1 2 3 4 5 6 7 8 9 10 11 12
def convert_base(value, base, length=16): if value  0: value = ( 1) + value res = '' while value > 0: res = str(value % base) + res value //= base return res print(convert_base(-173, 4)) # 33331103

vpArth, Спасибо за замечание. У меня была такая мысль, но поленился опять вспоминать о представлении отрицательных чисел в питоне. Приемы дополнения и так далее.

Добавлено через 2 часа 32 минуты
vpArth, На самом деле все не так просто. Ваш подход верен только для 4-х разрядных вычислительных систем, то есть только для определенных видов математических вычислений. Для современных компьютеров такой подход не пригоден, так как в байте не 4, а 8 бит и при этом может использоваться только двоичная система счисления, так как бит может иметь только 0 и 1 . Поэтому компьютер при преобразовании числа 33331103 представленного в четверичной системе счисления выдаст нам десятичное число 65363

, а не -147 .
И -1 в 8_и битовом компьютере будет не 33333333 , а будет 11111111 .
В 4_х битовом компьютере -1 будет выглядеть так, 1111 .
Поэтому Ваши вычисления не имеют никакого отношения к байтам компьютера, а годятся только для математических вычислений относящихся к четырехзначной системе счисления, где нет понятия байта а оперируют понятием разрядности.
В общем то это претензии не к Вам, а к составителю условия задачи. По моему не правильно число содержащее 4 разряда называть байтом.
Я уже давно не занимался математикой, но это скорее математическая задача, в которой не все ясно, например определение понятия байта.

Источник

Перевод из одной системы счисления в другую Python

Сейчас мы реализуем перевод чисел из любой системы счисления в другую на питоне.

Перевод в СС через встроенные функции Python

Перевод из любой СС в 10 (например из 16-чной в 10-чную)

x = int(input()) y = int(x, 16) #Перевод из 16 в 10 print(y)

Перевод из 10 в 16-чную

x = int(input()) y = hex(x) print(y)

Перевод из 10 в 8-чную

x = int(input()) y = oct(x) print(y)

Перевод из 10 в 2-чную

x = int(input()) y = bin(x) print(y)

Свои функции перевода в СС

Перевод из 10 в 2 — 9-чную.

Вместо цифр 7 можно поставить любое другое число от 2 до 9.

def in7(a): n = '' k = '' while a > 0: n = n + str(a % 7) a = a // 7 n = list(reversed(n)) for j in range(len(n)): k += n[j] return k

Перевод из 2 — 9-чной в 10-ую

def in10(a, n): a = str(a) k = 0 for i in range(len(a)): k += int(a[len(a)-i-1]) * int(n**i) return k

Не получается программировать на C#, но хочется сделать игру на Unity?

Попробуй эту простую программу-конструктор, в которой можно создать любой скрипт на языке программирования C# специально для своих игр на Unity!

C Sharp Maker 2 поможет создать из простых блоков готовый код на C#, который остаётся только вставить в игру))

Мы — Wow Games,
команда, которая разрабатывает игры, а также приложения, помогающие Вам делать свои игры. Мы поможем, если у Вас возникли проблемы, и мы всегда рады новым участникам в нашей команде. Не бойтесь задавать вопросы, мы всегда на них ответим.

Всем привет!
Мы — Wow Games, команда, которая разрабатывает игры, а также приложения, помогающие Вам делать свои игры. Мы поможем, если у Вас возникли проблемы, и мы всегда рады новым участникам в нашей команде. Не бойтесь задавать вопросы, мы всегда на них ответим.

Источник

Оцените статью