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

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

  • автор:

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

Решение получаем с помощью калькулятора. Для перевода целой части необходимо умножить разряд числа на соответствующую ему степень разряда.
1101010 = 2 6 *1 + 2 5 *1 + 2 4 *0 + 2 3 *1 + 2 2 *0 + 2 1 *1 + 2 0 *0 = 64 + 32 + 0 + 8 + 0 + 2 + 0 = 106

Для перевода дробной части необходимо разделить разряд числа на соответствующую ему степень разряда
1101 = 2 -1 *1 + 2 -2 *1 + 2 -3 *0 + 2 -4 *1 = 0.8125
Таким образом, число 1101010,11012 в десятичной системе счисления записывается как 106,8125.

Пример 2. Перевести число 42,678 в десятичное представление.
Для перевода целой части необходимо умножить разряд числа на соответствующую ему степень разряда.
42 = 8 1 *4 + 8 0 *2 = 32 + 2 = 34

Для перевода дробной части необходимо разделить разряд числа на соответствующую ему степень разряда
67 = 8 -1 *6 + 8 -2 *7 = 0.859375

Таким образом, число 42,678 в десятичной системе счисления записывается как 34,859375.

Пример 3. Перевести число E6,7116 в десятичное представление.
Для перевода целой части необходимо умножить разряд числа на соответствующую ему степень разряда.
E6 = 16 1 *14 + 16 0 *6 = 224 + 6 = 230

Для перевода дробной части необходимо разделить разряд числа на соответствующую ему степень разряда
71 = 16 -1 *7 + 16 -2 *1 = 0.44140625
Таким образом, число E6,7116 в десятичной системе счисления записывается как 230,44140625.

Аннуитетные платежи онлайн

Аннуитетные платежи онлайн

Расчет аннуитетных платежей по схеме постнумерандо и пренумерандо с помощью удобного калькулятора.

Профессии будущего

РБК Тренды изучили прогнозы российских и зарубежных футурологов, и составили список самых востребованных профессий в ближайшие 30 лет. Это профессии из 19 отраслей: от медицины и транспорта до культуры и космоса

Налоговый вычет на обучение

√ 120 тыс. руб. — максимальная сумма расходов на обучение
√ вычет от государства
√ вычет от работодателя

  • Задать вопрос или оставить комментарий
  • Помощь в решении
  • Поиск
  • Поддержать проект

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

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

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

number = 123 result = bin(number) print(result)
>'0b1111011'

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

number = 123 result = oct(number) print(result)
>'0o173'

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

number = 123 result = hex(number) print(result)
>'0x7b'

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

print(bin(123)[2:]) print(oct(123)[2:]) print(hex(123)[2:])
>'1111011' >'173' >'7b'

Так же выводить числа в других системах счисления можно используя 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() который заменит все прописные символы английского языка на строчные. Иначе, вернем результат как есть.

А теперь проверим работу нашей функции. Для этого попробуем перевести числа в , , 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))
>'1111011' >'173' >'7b' >'3R' >None

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

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

Перевод чисел в двоичную, шестнадцатеричную, десятичную, восьмеричную системы счисления

Можно вводить как целые числа, например 34 , так и дробные, например, 637.333 . Для дробных чисел указывается точность перевода после запятой.

  1. Операции с двоичными числами (сложение и вычитание)

Способы представления чисел

Двоичные (binary) числа – каждая цифра означает значение одного бита (0 или 1), старший бит всегда пишется слева, после числа ставится буква «b». Для удобства восприятия тетрады могут быть разделены пробелами. Например, 1010 0101b.
Шестнадцатеричные (hexadecimal) числа – каждая тетрада представляется одним символом 0. 9, А, В, . F. Обозначаться такое представление может по-разному, здесь используется только символ «h» после последней шестнадцатеричной цифры. Например, A5h. В текстах программ это же число может обозначаться и как 0хА5, и как 0A5h, в зависимости от синтаксиса языка программирования. Незначащий ноль (0) добавляется слева от старшей шестнадцатеричной цифры, изображаемой буквой, чтобы различать числа и символические имена.
Десятичные (decimal) числа – каждый байт (слово, двойное слово) представляется обычным числом, а признак десятичного представления (букву «d») обычно опускают. Байт из предыдущих примеров имеет десятичное значение 165. В отличие от двоичной и шестнадцатеричной формы записи, по десятичной трудно в уме определить значение каждого бита, что иногда приходится делать.
Восьмеричные (octal) числа – каждая тройка бит (разделение начинается с младшего) записывается в виде цифры 0–7, в конце ставится признак «о». То же самое число будет записано как 245о. Восьмеричная система неудобна тем, что байт невозможно разделить поровну. см. также Представление чисел в ЭВМ

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

Перевод целых десятичных чисел в любую другую системы счисления осуществляется делением числа на основание новой системы счисления до тех пор, пока в остатке не останется число меньшее основания новой системы счис­ления. Новое число записывается в виде остатков деления, начиная с последнего.
Перевод правильной десятичной дроби в другую ПСС осуществляется умножением только дробной части числа на основание новой системы счисления до тех пор пока в дробной части не останутся все нули или пока не будет достигнута заданная точность перевода. В результате выполнения каждой операции умножения формируется одна цифра нового числа начиная со старшего.
Перевод неправильной дроби осуществляется по 1 и 2 правилу. Целую и дробную часть записывают вместе, отделяя запятой. Пример №1 .


Перевод из 2 в 8 в 16 системы счисления.
Эти системы кратны двум, следовательно, перевод осуществляется с использованием таблицы соответствия (см. ниже). Для перевода числа из двоичной системы счисления в восьмиричную (шестнадцатиричную) необходимо от запятой вправо и влево разбить двоичное число на группы по три (четыре – для шестнадцатиричной) разряда, дополняя при необходимости нулями крайние группы. Каждую группу заменяют соответствующей восьмиричной или шестнадцатиричной цифрой. Пример №2 . 1010111010,1011 = 1.010.111.010,101.1 = 1272,548
здесь 001=1; 010=2; 111=7; 010=2; 101=5; 100=4 При переводе в шестнадцатеричную систему необходимо делить число на части, по четыре цифры, соблюдая те же правила.
Пример №3 . 1010111010,1011 = 10.1011.1010,1011 = 2B12,13HEX
здесь 0010=2; 1011=B; 1010=12; 1011=13 Перевод чисел из 2 , 8 и 16 в десятичную систему исчисления производят путем разбивания числа на отдельные и умножения его на основание системы (из которой переводится число) возведенное в степень соответствующую его порядковому номеру в переводимом числе. При этом числа нумеруются влево от запятой (первое число имеет номер 0) с возрастанием, а в правую сторону с убыванием (т.е. с отрицательным знаком). Полученные результаты складываются. Пример №4 .
Пример перевода из двоичной в десятичную систему счисления.

1010010,1012 = 1·26+0·25+1·24+0·23+0·22+1·21+0·20 + 1·2-1+0·2-2+1·2-3 = 
= 64+0+16+0+0+2+0+0.5+0+0.125 = 82.62510

Пример перевода из восьмеричной в десятичную систему счисления.

108.58 = 1*·82+0·81+8·80 + 5·8-1 = 64+0+8+0.625 = 72.62510

Пример перевода из шестнадцатеричной в десятичную систему счисления.

108.516 = 1·162+0·161+8·160 + 5·16-1 = 256+0+8+0.3125 = 264.312510
  1. Из десятичной системы счисления:
    • разделить число на основание переводимой системы счисления;
    • найти остаток от деления целой части числа;
    • записать все остатки от деления в обратном порядке;
  2. Из двоичной системы счисления
    • Для перевода в десятичную систему счисления необходимо найти сумму произведений основания 2 на соответствующую степень разряда;
    • Для перевода числа в восьмеричную необходимо разбить число на триады.
      Например, 1000110 = 1 000 110 = 1068
    • Для перевода числа из двоичной системы счисления в шестнадцатеричную необходимо разбить число на группы по 4 разряда.
      Например, 1000110 = 100 0110 = 4616
Двоичная СС Шестнадцатеричная СС
0000 0
0001 1
0010 2
0011 3
0100 4
0101 5
0110 6
0111 7
1000 8
1001 9
1010 A
1011 B
1100 C
1101 D
1110 E
1111 F

Таблица для перевода в восьмеричную систему счисления

Двоичная СС Восьмеричная СС
000 0
001 1
010 2
011 3
100 4
101 5
110 6
111 7

Пример №5 . Перевести число 100,12 из десятичной системы счисления в восьмеричную систему счисления и обратно. Пояснить причины расхождений.
Решение.
1 Этап. Перевод числа из десятичной системы счисления в восьмеричную систему счисления.

Остаток от деления записываем в обратном порядке. Получаем число в 8-ой системе счисления: 144
100 = 1448

Для перевода дробной части числа последовательно умножаем дробную часть на основание 8. В результате каждый раз записываем целую часть произведения.
0.12*8 = 0.96 (целая часть 0 )
0.96*8 = 7.68 (целая часть 7 )
0.68*8 = 5.44 (целая часть 5 )
0.44*8 = 3.52 (целая часть 3 )
Получаем число в 8-ой системе счисления: 0753.
0.12 = 0.7538

2 Этап. Перевод числа из десятичной системы счисления в восьмеричную систему счисления.
Обратный перевод из восьмеричной системы счислений в десятичную.

Для перевода целой части необходимо умножить разряд числа на соответствующую ему степень разряда.
144 = 8 2 *1 + 8 1 *4 + 8 0 *4 = 64 + 32 + 4 = 100

Для перевода дробной части необходимо разделить разряд числа на соответствующую ему степень разряда
0753 = 8 -1 *0 + 8 -2 *7 + 8 -3 *5 + 8 -4 *3 = 0.119873046875 = 0.1199

144,07538 = 100,119910 ≈ 100,1210
Разница в 0,0001 (100,12 — 100,1199) объясняется погрешностью округлений при переводе в восьмеричную систему счислений. Эту погрешность можно уменьшить, если взять большее число разрядов (например, не 4, а 8).

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

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

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

1 1 0 1 1 0 2 = 1*2 5 + 1*2 4 + 0*2 3 +1*2 2 +1*2 1 +0*2 0 =32+16+4+2=5410

Пример2. Перевести число 101,012 из двоичной системы счисления в десятичную.

1 0 1,0 1 2 = 1*2 2 + 0*2 1 + 1*2 0 +0*2 -1 +1*2 -2 =4+0+1+0+0,25=5,2510

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

1 2 2 0 1 3=1*3 4 + 2*3 3 + 2*3 2 + 0*3 1 + 1*3 0 = 81+54+18+1 = 15410

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

Решение: 1637 = 1*7 2 + 6*7 1 + 3*7 0 = 49+42+3= 9410.

Пример5. Перевести число 234,68 из восьмеричной системы в десятичную:

2 3 4, 68 = 2*8 2 +3*8 1 + 4*8 0 +6*8 -1 = 2*64+3*8+4+6*0,125= 128+24+4+0,75 =156,7510

Пример6. Перевести число 2Е16 в десятичную систему счисления.

2 Е16 = 2*16 1 +14*16 0 = 32 +14 = 4610.

Перевести из различных систем счисления в десятичную:

а) 1111001112 г) 367,28

б) 1001110,112 в) АВ2Е,816

N5. Перевод чисел из двоичной системы счисления в восьмеричную и шестнадцатеричную системы счисления.

Перевод целых чисел.

Правило Чтобы перевести целое двоичное число в восьмеричную (8=2 3 ) систему счисления необходимо:

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

Пример1. Перевести число 111010102 в восьмеричную систему счисления.

Пример2. Перевести число 111100000101102 в восьмеричную систему счисления.

О твет: 111100000101102= 760268

Правило Чтобы перевести целое двоичное число в шестнадцатеричную (16=2 4 ) систему счисления необходимо:

  • разбить данное число справа налево на группы по 4 цифры в каждой;
  • рассмотреть каждую группу и записать ее соответствующей цифрой шестнадцатеричной системы счисления.

Пример3. Перевести число 111000102 в шестнадцатеричную систему счисления.

Пример4. Перевести число 111100000101102 в шестнадцатеричную систему счисления.

О твет: 111100000101102= 3С1616

Перевод дробных чисел.

Правило Чтобы перевести дробное двоичное число в восьмеричную (шестнадцатеричную) систему счисления необходимо:

  • разбить данное число, начиная от запятой влево целую часть и вправо дробную часть на группы по 3 (4) цифры в каждой;
  • рассмотреть каждую группу и записать ее соответствующей цифрой восьмеричной (шестнадцатеричной)системы счисления.

Пример5. Перевести число 0,101100001112 в шестнадцатеричную систему счисления.

Пример6. Перевести число 111100001,01112 в восьмеричную систему счисления.

Пример7. Перевести число 11101001000,110100102 в шестнадцатеричную систему счисления.

Ответ: 11101001000,110100102 = 748,D216

Перевести числа в восьмеричную и шестнадцатеричную системы счисления:

а) 11010001010112

б) 100000011,0001011102

в) 10010111011101,111010112

г) 111110000000111111111,0000011111000001111101012

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *