Ранее мы показали, что в позиционной системе счисления с основанием p число N может быть представлено в виде разложения по степеням основания, где цифры числа играют роль коэффициентов.
Nk = ck * 10k + ck-1 * 10k-1 + … + c1 * 101 + c0 * 100 (*)
Примеры: Число 1234 в десятичной системе можно записать в виде: 1*103 + 2*102 + 3*101 + 4*100
Число 11012 в двоичной системе можно записать в виде: 1*103 + 1*102 + 0*101 + 1*100
Поскольку в двоичной системе число 10 равно 2 в десятичной системе то последнюю запись в десятичном представлении можно записать в виде: 1*23 + 1*22 + 0*21 + 1*20
В любой системе счисления основание системы p представимо числом 10. Поэтому для любой системы справедлива запись:
Nk = ck * pk + ck-1 * pk-1 + … + c1 * p1 + c0 * p0 (**)
Это означает, что любое десятичное число можно представить в виде разложения по степеням основания любой системы счисления с основанием p. В роли коэффициентов при степенях основания выступают цифры системы счисления.
Запись (**) является основой для того чтобы разобрать число на цифры, если известно основание p. Задача разложения числа по степеням основания (задача разбора числа) называется задачей перевода десятичного числа в систему с основанием p.
Запись (**) является основой для решения обратной задачи - сборки числа из цифр, если известна запись числа в системе с основанием p. Задача сборки десятичного числа называется задачей перевода числа из системы с основанием p в десятичную систему.
Перевод из системы P в десятичную систему решается простыми вычислениями.
Задача дана запись числа N в двоичной системе: 10111. Перевести число в десятичную систему
101112 = 1*20 + 1*21 + 1*22 + 0*23 + 1*24 = 1 + 2 +4 + 16 = 2310
Задача: Дано число N в десятичной системе. Необходимо разобрать это число, получив его цифры в системе с основанием p.
Используя базисное соотношение (**), запишем число Nk в виде:
Nk = (ck * pk-1 + ck-1 * pk-2 + … + c1) * p1 + c0 * p0 = Nk-1 * p + c0 (***)
Сведем нашу задачу к более простой задаче, как зная Nk получить последнюю цифру этого числа - c0 и число Nk-1,
Две замечательные операции над целыми числами помогают решить нашу задачу:
В математике и программировании нет общепринятых обозначений этих важных операций. В языке Pascal эти операции обозначаются словами: mod (остаток) и div (деление нацело). Такие же обозначения приняты при записи на алгоритмическом языке, применяемом при записи школьных программ. В языках С, С++, Java, C# операцию взятия остатка обозначает знак ‘%’, деление нацело -знак ‘/’ (предполагается, что операнды представляют целые числа). Справедливы следующие соотношения:
С0 = Nk mod p; Nk-1 = Nk div p;
С0 = Nk % p; Nk-1 = Nk / p; (****)
Переведем десятичное число 78 в восьмеричную систему
Шаг 1 с0 = 78 mod 8 = 6; N = 78 div 8= 9
Шаг 2 с1 = 9 mod 8 = 1; N = 9 div 8 = 1;
Шаг 3 c2 = 1 mod 8 = 1; N = 1 div 8 = 0; Stop
7810 = 1168 = 64 + 8 + 6 = 7810
Можно применять и другой алгоритм перевода, начиная поиск со старшей цифры, но об этом в последующих уроках.
Задачи для самостоятельного решения:
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.