Перевод чисел из восьмеричной системы в десятичную
Алгоритм перевода чисел из восьмеричной в десятичную систему счисления аналогичен уже рассматривавшемуся нами в разделе Перевод чисел из двоичной системы в десятичную. Различие состоит лишь в том, что для восьмеричной системы счисления основанием является число 8, а правило перевода в данном случае может быть сформулировано в следующем виде:
Для перевода восьмеричного числа в десятичное необходимо это число представить в виде суммы произведений степеней основания восьмеричной системы счисления на соответствующие цифры в разрядах восьмеричного числа.
Например, требуется перевести восьмеричное число 2357 в десятичное. В этом числе 4 цифры и 4 разряда ( разряды считаются, начиная с нулевого, которому соответствует младший бит). В соответствии с уже известным нам правилом представим его в виде суммы степеней с основанием 8:
23578 = (2·8 3 )+(3·8 2 )+(5·8 1 )+(7·8 0 ) = 2·512 + 3·64 + 5·8 + 7·1 = 126310
Для вычислений «вручную» и решения примеров и контрольных заданий вам могут пригодиться таблицы степеней оснований изучаемых систем счисления (2, 8, 10, 16), приведенные в Приложении.
Перевод чисел из шестнадцатеричной системы в десятичную
После изучения предыдущего раздела переформулировать алгоритм перевода чисел из шестнадцатеричной в десятичную систему счисления не составляет никакого труда. Помнить следует лишь о том, что для шестнадцатеричной системы счисления основанием является число 16, и правило перевода в данном случае может быть сформулировано в следующем виде:
Для перевода шестнадцатеричного числа в десятичное необходимо это число представить в виде суммы произведений степеней основания шестнадцатеричной системы счисления на соответствующие цифры в разрядах шестнадцатеричного числа.
Например, требуется перевести шестнадцатеричное число F45ED23C в десятичное. В этом числе 8 цифр и 8 разрядов (помним, что разряды считаются, начиная с нулевого, которому соответствует младший бит). В соответствии с вышеуказанным правилом представим его в виде суммы степеней с основанием 16:
F45ED23C16 = (15·16 7 )+(4·16 6 )+(5·16 5 )+(14·16 4 )+(13·16 3 )+(2·16 2 )+(3·16 1 )+(12·16 0 ) = 409985490810
Для вычислений «вручную» и решения примеров и контрольных заданий вам могут пригодиться таблицы степеней оснований изучаемых систем счисления (2, 8, 10, 16), приведенные в Приложении.
Перевод чисел из десятичной системы в двоичную
Для перевода чисел из десятичной системы счисления в двоичную используют так называемый «алгоритм замещения», состоящий из следующей последовательности действий:
Делим десятичное число А на 2. Частное Q запоминаем для следующего шага, а остаток a записываем как младший бит двоичного числа.
Если частное q не равно 0, принимаем его за новое делимое и повторяем процедуру, описанную в шаге 1. Каждый новый остаток (0 или 1) записывается в разряды двоичного числа в направлении от младшего бита к старшему.
Алгоритм продолжается до тех пор, пока в результате выполнения шагов 1 и 2 не получится частное Q = 0 и остаток a = 1.
Например, требуется перевести десятичное число 247 в двоичное. В соответствии с приведенным алгоритмом получим: 24710 : 2 = 12310
24710 — 24610 = 1, остаток 1 записываем в МБ двоичного числа.
12310 — 12210 = 1, остаток 1 записываем в следующий после МБ разряд двоичного числа.
6110 — 6010 = 1, остаток 1 записываем в старший разряд двоичного числа.
3010 — 3010 = 0, остаток 0 записываем в старший разряд двоичного числа.
1510 — 1410 = 1, остаток 1 записываем в старший разряд двоичного числа.
710 — 610 = 1, остаток 1 записываем в старший разряд двоичного числа.
310 — 210 = 1, остаток 1 записываем в старший разряд двоичного числа.
110 : 2 = 010, остаток 1 записываем в старший разряд двоичного числа.
Перевод чисел из десятичной системы счисления в восьмеричную и наоборот.

В этом уроке информатики мы рассмотрим как перевести любое число из десятичной системы счисления в восьмеричную, а затем переведем произвольное число из восьмиричной системы счисления в десятичную, то есть сделаем обратное действие.
Итак в десятичной системе счисления мы пользуемся 10 цифрами с помощью которых можем составить любое число. Это цифры 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.
В восьмеричной системе счисления у нас только восемь цифр 0, 1, 2, 3, 4, 5, 6, 7, с помощью которых мы можем составлять любые числа.
В восьмеричной системе счисления после семерки идет цифра 10 т.к. цифры 8 в ней нет. Почему? А потому что когда мы работаем в десятичной системе счисления то когда доходим до 9 то при прибавлении к ней единицы 9+1 получаем, что 9 заменяется на ноль, слева от которого добавляется 1 (к старшему разряду).
Таким образом мы можем попробовать составить небольшую таблицу соответствия чисел десятичной и восьмиричной системы счисления.
Десятичная
Восьмеричная
То есть, смотрите, когда мы выписывали правый столбец (числа в восьмеричной системе счисления) мы руководствовались тем правилом, которое описали выше таблицы. Как только у нас заканчиваются цифры системы счисления мы пишем ноль и добавляем единицу к старшему разряду.
А теперь рассмотрим как перевети число из десятичной системы счисления в восьмеричную. Давайте возьмем число 259 в десятичной системе счисления.
Число в десятичной системе счисления делим на основание степени (восьмерку). Получаем какую то целую часть и остаток. Если целая часть больше либо равна 8, то опять делим на основание степени и получаем целую часть и остаток. Как только целая часть становится меньше восьми, начинаем выписывать, сначала последнюю целую часть, а затем все остатки в обратном порядке. Это и будет число в новой системе счисления, в нашем случае в восьмиричной.
И сделаем обратное преобразование переведем число 403 в восьмеричной системе счисления в десмятичную.
То есть вначале мы нумеруем числа справа налево для того, чтобы затем каждое из чисел в восьмиричной системе счисления умножить на восьмерку в соответствующей степени. Сложив все, мы получим результат в десятичной системе счисления.
Программирование на C, C# и Java
Уроки программирования, алгоритмы, статьи, исходники, примеры программ и полезные советы
ОСТОРОЖНО МОШЕННИКИ! В последнее время в социальных сетях участились случаи предложения помощи в написании программ от лиц, прикрывающихся сайтом vscode.ru. Мы никогда не пишем первыми и не размещаем никакие материалы в посторонних группах ВК. Для связи с нами используйте исключительно эти контакты: vscoderu@yandex.ru, https://vk.com/vscode
Восьмеричная система счисления
Восьмеричная система – одна из основных систем счислений наряду с двоичной, десятичной и шестнадцатеричной, применяемая в информационных технологиях.
Как мы знаем, компьютеры «воспринимают» лишь двоичную систему счисления, состоящую только из нулей и единиц. Однако человеку довольно непривычно и неудобно работать с такими числами. Например, привычное нам десятичное число 2 143 в двоичной системе будет выглядеть как 100001011111. Переводить числа из двоичной системы в десятеричную также не очень удобно и бывает довольно муторно.
В итоге было решено использовать альтернативные и более простые системы счисления: восьмеричную и шестнадцатеричную. Числа 8 и 16 являются степенями двойки (2 в третьей и 2 в четвёртой степени соответственно), поэтому выполнять преобразования из двоичной системы и наоборот гораздо легче, чем при десятичной системе счисления, которая не может похвастаться своей причастностью к степеням числа 2.
Кроме того, числа в восьмеричной системе как минимум более приятны глазу и гораздо короче, чем их аналоги в двоичной системе. Так, например, в восьмеричной системе то же число 2 143 будет записываться как 4137.
В восьмеричной системе счисления, как уже можно было догадаться, основанием является цифра 8 и, соответственно, она вмещает в себя только восемь цифр: от 0 до 7. Поэтому числа в восьмеричной системе счисления очень похожи на десятичные, в отличие от шестнадцатеричных, где присутствуют буквы латинского алфавита или двоичных, состоящих только из двух цифр. Отличают эти две системы тем, что в восьмеричной отсутствуют цифры 8 и 9, а также, очевидно, нижними индексами: у числа в десятичной системе прибавляют нижний индекс с цифрой 10, а к числам в восьмеричной системе приписывают цифру 8, например:

Теперь давайте научимся переводу чисел в восьмеричную систему счисления и наоборот.
Перевод из десятичной системы счисления в восьмеричную
Давайте попробуем изучить перевод десятичного числа в восьмеричное на примере. После этого примера вы без проблем сможете переводить любые числа в эту систему.
Возьмём десятичное число 15 450 и попробуем перевести его в восьмеричную систему счисления.
Для начала нам необходимо разделить исходное число на основание системы, в которую мы хотим это число перевести. Для восьмеричной системы это число 8. То есть мы делим 15 450 на 8.

Происходит деление в столбик, но, в отличие от стандартного деления, мы не находим неполные частные, а делим сразу всё делимое на 8. Наибольшим числом, при котором 15 450 делится без остатка на 8 будет число 1 931. 1931 * 8 = 15 448. Теперь мы вычитаем из 15 450 полученное число 15 448, у нас получился остаток 2. Выделяем эту двойку, так как это уже кусочек нашего числа в восьмеричной системе.
Продолжаем: теперь делим полученное на предыдущем шаге частное на 8:

Всё точно так же: наибольшим числом, при котором 1 931 делится без остатка на 8 будет число 241. При умножении 241 на 8 получается число 1 928. Ищем разность между 1 931 и 1928 – получается 3. Выделяем её. Далее делим 241 на 8.

Получается число 30, умножив его на 8, получаем 240. Вычитаем из 241 это число, получается 1. Выделяем единицу.
Продолжаем деление до тех пор, пока частное не станет меньше 8!

Итак, делим 30 на 8, получается 3,75, отбрасываем дробную часть, получается 3. Умножаем 3 на 8, получается 24. 30 — 24 = 6. Выделяем шестёрку. Мы закончили деление так как 3 меньше 8 . Обязательно выделяем последнее частное тоже (у нас это цифра 3).
Выделенные красным цифры – это и есть наше число в восьмеричной системе, НО они написаны наоборот. То есть, чтобы правильно прочитать число в восьмеричной системе, необходимо сделать это справа налево.

Таким образом, десятичное число 15 45010 в восьмеричной системе будет выглядеть как 36 1328.
Итого, алгоритм перевода чисел из десятичной системы в восьмеричную следующий:
- Разделить исходное число на 8. Найти максимальное частное и убрать дробную часть от него. Например, исходное число 20 : 8 = 2,5. Значит в частное мы записываем число 2.
- Умножить полученное частное на 8. Записать его под исходным числом.
- Найти остаток между этими числами и выделить его — это кусочек переведённого в восьмеричную систему числа.
- Затем разделить в столбик полученное частное на 8, записать ответ и проделать шаги 2 и 3.
- Производить деление до тех пор, пока делимое не станет меньше 8. Выделить это делимое тоже.
- Выписать все выделенные числа справа налево (т.е. последнее делимое будет на первом месте, затем идёт остаток, найденный на последнем шаге, затем остаток, найденный на предпоследнем шаге и т.д.). Полученное при такой записи число и будет нашим искомым восьмеричным.
Теперь перейдём к переводу восьмеричного числа в десятичную систему счисления.
Перевод из восьмеричной системы счисления в десятичную
Перевести восьмеричное число в десятичное даже проще, чем наоборот. Давайте рассмотрим пример: переведём восьмеричное число 36078 в десятичное.
Для начала мы делаем такую запись: с конца берём каждую цифру нашего исходного числа, каждое из них умножаем на 8, и все в целом складываем. Должно получиться примерно так:

Однако, это ещё не всё ! После того, как мы сделали подобную запись, ко всем числам 8, на которые умножаются цифры исходного числа, необходимо добавить степени в порядке возрастания: 0, 1, 2 и т.д. Обязательно необходимо начинать с нулевой степени !

Всё, что остаётся после этого – просто посчитать. В итоге у нас получилось число 1927 в десятичной системе.
Перевод из двоичной системы счисления в восьмеричную
Перевод чисел из двоичной системы счисления в восьмеричную – довольно необычное дело для тех, кто никогда с этим не сталкивался. Однако на деле всё не так пугающе, как может показаться с первого раза.
Давайте попробуем. Допустим, у нас есть двоичное число 1010010001011101100.
Для начала нам необходимо разбить это число на триады – группы из трёх цифр. Почему именно три цифры? Как мы знаем, у систем счислений имеются основания. И у двоичной системы основание – 2. Нам необходимо перевести двоичное число в восьмеричную систему с основанием 8. Математически это можно записать так:

Найти i, пожалуй, не составит труда: i = 3, то есть, для записи одного восьмеричного числа в двоичной системе необходимо 3 бита или, говоря иначе — 3 двоичные цифры. Поэтому мы и будем разбивать двоичное число на триады. Однако надо запомнить, что делать это надо с младшего бита . Бит – это одна цифра в двоичном числе. Чем дальше бит от начала числа, тем он младше. Самый младший бит – это последняя цифра двоичного числа. Иными словами, мы разбиваем число на триады, начиная с конца.

Внимание: если старшая триада не заполнена, до конца, перед ней необходимо дописать столько нулей, чтобы получилась полноценная триада.

Теперь всё, что нам остаётся – это перевести каждую из этих триад из двоичной системы счисления в восьмеричную. Это можно сделать самостоятельно:

Для этого в каждой отдельной триаде (начиная с первой) нужно каждую цифру (начиная с последней) умножить на 2, возведённую в степени от 0 до 2, и сложить полученные три числа.
Затем, полученные результаты по каждой отдельной триаде надо выписать, начиная с самой первой. Записанное число и будет нашим конечным результатом в восьмеричной системой счисления.
Однако можно сильно облегчить себе задачу, не высчитывая все триады числа, а просто сверяя каждую из них по таблице соответствия двоичных чисел восьмеричным, например, по такой:

Теперь можно просто смотреть на триаду, сверять её с таблицей и записывать число, соответствующее ей в восьмеричной системе.
Перевод из восьмеричной системы счисления в двоичную
Самым удобным способом перевода из восьмеричной системы счисления в двоичную является использование таблицы соответствий. Итак, допустим, мы хотим перевести восьмеричное число 36702 в двоичную систему. Что же нам делать? Мы берём первую цифру нашего исходного числа – 3. Ищем её по таблице соответствия – в двоичной системе это 011. Берём следующую цифру – 6 и ищем её в таблице, находим 110, и так далее. Продолжаем, пока не переведём все восьмеричные цифры в триады. В итоге у нас получится необходимое двоичное число.
Внимание: Если в старших битах (то есть в самом начале двоичного числа) имеются нули, необходимо убрать их до первой единицы. Например, как на изображении ниже. В старшем бите у нас получился ноль при переводе восьмеричной тройки, и мы убрали его. Это делается для удобства, потому что зачем хранить и писать незначащие цифры.

Перевод из восьмеричной системы счисления в шестнадцатеричную и из шестнадцатеричной системы в восьмеричную
К сожалению, несмотря на то, что эти системы счисления близки друг к другу, напрямую перевести друг в друга нельзя. Легче всего при переводе этих двух систем друг в друга воспользоваться посредничеством двоичной системы. То есть, перевести восьмеричную систему счисления в двоичную, разделив число на триады и воспользовавшись таблицей соответствий, а затем перевести это число из двоичной системы в шестнадцатеричную с помощью тетрад. И наоборот: перевести число из шестнадцатеричной системы в двоичную, а затем уже из двоичной системы в восьмеричную описанными выше способами.
Применение восьмеричной системы счисления
В прошлом веке выпускались компьютеры, в которых использовались 12-ти, 24-х и 36-битные слова. Это, например, модель ICT 1900 (1964 год), а также PDP-8, выпущенная в 1965 году — это коммерчески довольно успешная модель миникомпьютера в своё время. Кроме того, некоторые мейнфреймы от компании IBM использовали восьмеричную систему. В компьютерах, размер машинного которых кратен тройке, очень удобно использовать систему с основанием восемь, поскольку всегда все биты из слова можно представить в виде целого количества цифр в восьмеричной системе. Например, слово из 24-х бит, можно записать в виде 8-ми восьмеричных чисел.
Если говорить про использование восьмеричной системы в жизни людей, то известно, что в индейских языках Юки (Калифорния) и Паме (Мексика) использовалась данная система. Индейцы считали предметы не по количеству пальцев на руках, а по количеству промежутков между ними.
Как перевести число из восьмеричной системы счисления в десятичную в Python

Введение в перевод чисел в различные системы счисления
Перевод чисел из одной системы счисления в другую является важным аспектом программирования и математики. Системы счисления представляют способ представления чисел с использованием определенного набора символов или цифр. Хотя мы привыкли к десятичной системе счисления (основанной на числах от 0 до 9), существуют и другие системы, такие как двоичная (основанная на числах 0 и 1), восьмеричная (основанная на числах от 0 до 7) и шестнадцатеричная (основанная на числах от 0 до 9 и буквах A-F).
Перевод чисел из одной системы счисления в другую позволяет нам работать с числами в различных форматах и удобным образом. В Python существуют различные способы выполнения таких переводов, включая использование встроенных функций и ручную реализацию алгоритмов.
В этой статье мы сосредоточимся на переводе чисел из восьмеричной системы счисления в десятичную. Мы рассмотрим основы восьмеричной системы, а также различные подходы и практические примеры, которые помогут нам освоить этот процесс. Независимо от того, являетесь ли вы начинающим программистом или опытным разработчиком, эта статья поможет вам лучше понять принципы перевода чисел между системами счисления и применить их на практике с помощью языка Python.
Основы восьмеричной системы счисления
Восьмеричная система счисления является одной из позиционных систем счисления, в которой основание равно 8. В этой системе используются восемь цифр: от 0 до 7. По сравнению с десятичной системой, восьмеричная система имеет меньшую базу и использует меньше цифр.
Восьмеричные цифры: 0, 1, 2, 3, 4, 5, 6, 7
Каждая цифра в восьмеричной системе имеет своё место, называемое разрядом, начиная с младшего разряда справа. Каждый разряд имеет вес, который равен степени основания (8) в соответствии с позицией разряда. Младший разряд имеет вес 8 0 (равный 1), следующий разряд имеет вес 8 1 (равный 8), и так далее.
Например, число 173 в восьмеричной системе представляет собой комбинацию восьмеричных цифр с соответствующими весами: 1 * 8 2 + 7 * 8 1 + 3 * 8 0 = 123
Перевод чисел из восьмеричной системы в десятичную позволяет нам работать с числами в более привычной форме и выполнять различные вычисления. В следующих разделах мы рассмотрим различные методы и подходы к переводу чисел из восьмеричной системы в десятичную с помощью языка программирования Python.
Математический подход к переводу числа из восьмеричной системы в десятичную
Для перевода числа из восьмеричной системы счисления в десятичную можно использовать математический подход, основанный на позиционной системе счисления.
Предположим, у нас есть число в восьмеричной системе, например, 346. Чтобы перевести его в десятичную систему, мы будем использовать следующий алгоритм:
- Разобьем число на отдельные цифры, начиная с младшего разряда. Для числа 346 это будут цифры 6, 4 и 3.
- Умножим каждую цифру на основание системы счисления (8) в степени, соответствующей позиции разряда. Начнем с нулевой степени для младшего разряда и увеличиваем степень с каждым следующим разрядом.
- Просуммируем полученные произведения для каждого разряда. Полученная сумма будет являться десятичным эквивалентом числа в восьмеричной системе.
Давайте рассмотрим пример для числа 346:
3468 = (3 × 8 2 ) + (4 × 8 1 ) + (6 × 8 0 ) = 192 + 32 + 6 = 23010
Таким образом, число 346 в восьмеричной системе эквивалентно числу 230 в десятичной системе.
Математический подход позволяет перевести числа из восьмеричной системы в десятичную без использования встроенных функций или алгоритмов. Он основан на принципах позиционной системы счисления и является универсальным для любых чисел в восьмеричной системе.
Использование встроенных функций Python для перевода чисел в десятичную систему
Python предоставляет удобные встроенные функции для перевода чисел из различных систем счисления, включая восьмеричную систему, в десятичную систему. Эти функции позволяют выполнить перевод с минимальными усилиями и упрощают процесс программирования.
Функция int() — одна из таких функций. Она позволяет преобразовать число из указанной системы счисления в десятичную систему. Синтаксис функции int() следующий:
Здесь number — число, которое требуется перевести в десятичную систему, а base — база системы счисления данного числа.
Давайте рассмотрим пример использования функции int() для перевода числа из восьмеричной системы в десятичную:
В этом примере мы передаем число ‘346’ в качестве аргумента number и указываем базу системы счисления ( 8 ) в качестве аргумента base . Функция int() выполняет перевод числа ‘346’ из восьмеричной системы в десятичную и присваивает результат переменной decimal_number . В итоге, decimal_number будет содержать число 230 — десятичный эквивалент числа ‘346’ .
Использование встроенных функций Python для перевода чисел в десятичную систему предоставляет простой и эффективный способ выполнить эту операцию. Эти функции могут быть использованы в различных программных задачах, где требуется работа с числами в разных системах счисления.
Ручная реализация алгоритма перевода из восьмеричной системы в десятичную в Python
Ручная реализация алгоритма перевода числа из восьмеричной системы счисления в десятичную может быть полезной, особенно если вам интересно понять внутреннюю логику и принципы работы такого преобразования.
Вот код, который запрашивает у пользователя восьмеричное число и выполняет перевод в десятичную систему:
Разберём код подробнее:
- Сначала мы запрашиваем у пользователя восьмеричное число с помощью функции input() . Введенное значение сохраняется в переменной octal_number как строка.
- Затем мы инициализируем переменные decimal_number (для хранения результата в десятичной системе) и power (для отслеживания текущей степени числа 8).
- С помощью функции int() мы преобразуем строковое значение octal_number в целое число. Теперь octal_number содержит восьмеричное число в числовом формате.
- Далее мы переходим к переводу числа из восьмеричной в десятичную систему с помощью цикла while .
- В каждой итерации цикла мы используем операцию остатка от деления % для получения последней цифры восьмеричного числа. Мы сохраняем эту цифру в переменной digit .
- Затем мы умножаем digit на 8, возведенное в степень power , и добавляем результат к переменной decimal_number . Это позволяет нам складывать числа, учитывая их разряды и их вес в восьмеричной системе.
- После этого мы увеличиваем power на 1, чтобы перейти к следующему разряду восьмеричного числа.
- Мы также делим octal_number на 10, чтобы удалить последнюю обработанную цифру. Это позволяет нам продолжать цикл до тех пор, пока весь восьмеричный номер не будет обработан.
- Цикл продолжается, пока octal_number не станет равным 0, то есть все цифры числа будут обработаны.
- После завершения цикла мы выводим результат, используя функцию print() . Мы форматируем строку, включая полученное десятичное число в выводе.
Это пример ручной реализации алгоритма перевода из восьмеричной системы в десятичную.