1. Перевод числа из произвольной позиционной системы счисления в десятичную
Алгоритм перевода числа из любой позиционной системы в десятичную достаточно прост и уже тебе знаком. Для того чтобы перевести число любой позиционной системы счисления в десятичную, необходимо представить число в развёрнутой форме и вычислить результат. Полученный результат будет являться десятичным числом.
Рассмотрим примеры.
1. Переведём число 101101,11 2 в десятичную систему счисления.
Запишем двоичное число в развёрнутой форме.
1 5 0 4 1 3 1 2 0 1 1 0 , 1 − 1 1 − 2 = 1 × 2 5 + 0 × 2 4 + 1 × 2 3 + 1 × 2 2 + 0 × 2 1 + 1 × 2 0 + 1 × 2 − 1 + 1 × 2 − 2 .
Вычислим результат.
1 × 32 + 0 × 16 + 1 × 8 + 1 × 4 + 0 × 2 + 1 × 1 + 1 × 0,5 + 1 × 0,25 = = 32 + 0 + 8 + 4 + 0 + 1 + 0,5 + 0,25 = 45,75 .
Значит, 101101,11 2 \(=\) 45,75 10 .
2. Переведём число D3A8 , 9 16 в десятичную систему счисления.
Запишем развёрнутую запись числа.
D 3 3 2 A 1 8 0 , 9 − 1 = D × 16 3 + 3 × 16 2 + A × 16 1 + 8 × 16 0 + 9 × 16 − 1 = = 13 × 16 3 + 3 × 16 2 + 10 × 16 1 + 8 × 16 0 + 9 × 16 − 1 .
Вычислим результат.
13 × 4096 + 3 × 256 + 10 × 16 + 8 × 1 + 9 × 0,0625 = = 53248 + 768 + 160 + 8 + 0,5625 = 54184,5625 .
Значит, D3A8 , 9 16 \(=\) 54184,5625 10 .
3. В системе счисления с основанием \(n\) десятичное число \(17\) записывается в виде \(25\). Найди \(n\).
Запишем уравнение.
25 n = 2 × n 1 + 5 × n 0 = 17 10 .
Вычислим: любое число в нулевой степени равняется единице, поэтому 5 × n 0 будет равняться \(5\). \(17-5 = 12\), любое число в первой степени будет равняться самому числу, для того чтобы получить \(12\), нужно \(2\) умножить на \(6\).
Перевод чисел из одной системы в другую
Алгоритм перевода целых чисел из десятичной системы счисления в любую другую позиционную систему счисления:
- Разделить столбиком данное целое число на основание той системы счисления, в которую будет осуществлён перевод числа.
- Если полученный результат (частное или неполное частное) меньше чем указанное основание системы счисления, то переходим к шагу 3. Если полученный результат (частное или неполное частное) больше или равен основанию системы счисления, то делим результат на основание системы счисление.
- Получаем ответ: все полученные остатки + последний результат деления записываем в порядке, обратном порядку их получения.
В десятичную систему счисления
Чтобы выполнить перевод целого числа из любой позиционной системы счисления в десятичную, нужно представить число в виде суммы разрядных слагаемых. Цифры и разрядные единицы записываются в десятичной системе счисления.
37810 = 3 · 100 + 7 · 10 + 8 = 3 · 10 2 + 7 · 10 1 + 8 · 1.
Ниже представлены примеры перевода целых чисел из двоичной, восьмеричной и шестнадцатеричной систем в десятичную:
Список литературы | | | contact@izamorfix.ru |
2018 − 2023 | © | izamorfix.ru |
Перевод чисел в десятичную систему счисления
Решение получаем с помощью калькулятора. Для перевода целой части необходимо умножить разряд числа на соответствующую ему степень разряда.
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.
Переводим число из любой системы счисления в десятичную
Однажды потребовалось из шестнадцатеричной строки вида «0000FF6A9B4» получить число в десятичной системе счисления. Поиск привел к //infostart.ru/public/70053/ но в этой статье мы видим обратный перевод из десятичной в другую систему. Пришлось писать собственными лапами. В прилагающейся обработке для управляемых форм 8.2. лежит пример перевода. Если изменить шаблон с «0123456789ABCDEF» на «0123456789» — перевод будет происходить из десятичной на «01234567» — из восьмеричной системы счисления, «01» — двоичной. Для тех, кому лень качать обработку вот основной код: &НаКлиенте
Функция ИзХСчислВЧисло ( аф , Шаблон ) // Шаблон = «0123456789ABCDEF»
аф = ВРег ( аф ); // на всякий случай.
ДлинаШаблона = СтрДлина ( Шаблон );
(^.^)>
ДлинаСтроки = СтрДлина ( аф );
ТекСимвол = ДлинаСтроки ;
Результат = 0 ;
Пока ТекСимвол > 0 Цикл
ОбработкаПрерыванияПользователя ();
ОбрабатываемыйСимвол = Сред ( аф , ТекСимвол , 1 );
ПозицияВШаблоне = Найти ( Шаблон , ОбрабатываемыйСимвол )- 1 ;
Результат = Результат + ( ПозицияВШаблоне * pow ( ДлинаШаблона , ДлинаСтроки — ТекСимвол ));
ТекСимвол = ТекСимвол — 1 ;
КонецЦикла;
Возврат( Результат );
КонецФункции UPD: Пользователь VUN предложил более компактный метод решения той же проблемы, без использования функции возведения в степень:
&НаКлиенте
Функция ИзХСчислВЧисло ( аф , Шаблон )
аф = ВРег ( аф ); // на всякий случай.
ДлинаШаблона = СтрДлина ( Шаблон );
ДлинаСтроки = СтрДлина ( аф );
Результат = 0 ;
Для ТекСимвол = 1 По ДлинаСтроки Цикл
ОбрабатываемыйСимвол = Сред ( аф , ТекСимвол , 1 );
ПозицияВШаблоне = Найти ( Шаблон , ОбрабатываемыйСимвол )- 1 ;
Результат = Результат * ДлинаШаблона + ПозицияВШаблоне ;
КонецЦикла;