150 likes | 451 Views
Муниципальное автономное образовательное учреждение Лицей № 36. Запись натурального числа в позиционной системе счисления с основанием, меньшим 10. Автор: Перова Е.А., учитель информатики и ИТ. Нижний Новгород 2013. 68. 2. 2. 2. 2. 2. 2. 34. 17. 8. 2. 1. 4. 1. 0. 0. 0. 0.
E N D
Муниципальное автономное образовательное учреждение Лицей № 36 Запись натурального числа в позиционной системе счисления с основанием, меньшим 10 Автор: Перова Е.А., учитель информатики и ИТ Нижний Новгород 2013
68 2 2 2 2 2 2 34 17 8 2 1 4 1 0 0 0 0 0 Как перевести натуральные числа из десятичной системы счисления в систему с другим основанием? Ответ: 6810=10001002
Алгоритм: Необходимо определять остаток от деления заданного числа и всех промежуточных целочисленных частных на основание и делать это до тех пор, пока частное не станет равным нулю. Полученные остатки и представляют собой цифры новой записи числа. Цифры новой записи числа можно записывать • в числовой массив; • в строковую переменную.
Решим задачу двумя способами 1 способ: Обозначим заданное натуральное десятичное число –n, запоминаем его для вывода ответа –n2, основание системы счисления, в которую нужно перевести число – q, индекс массива – kol_zifr, массив – zifri.
Программа: kol_zifr := 0;n2:=n; while n > 0 do begin {увеличиваем значение kol_zifr} kol_zifr := kol_zifr + 1; {определяем очередную цифру} zifri[kol_zifr ] := n mod q; {определяем целочисленное частное} n := n div q end; {выводим ответ: цифры в обратном порядке} write (‘Число ’,n2,‘ в системе счисления ‘,q, ‘ = ’); for i:= kol_zifrdownto 1 do write(zifri[i]);
2410=110002 Выполняем: число n=24, основание q=2 kol_zifr := 0; n2:=n; while n > 0 do begin kol_zifr:= kol_zifr + 1; zifri[kol_zifr] := n mod q; n := n div q end; write (‘Число ’,n2,‘ в системе счисления ‘,q, ‘ =’); for i:= kol_zifrdownto 1 do write(zifri[i]); while n > 0 do while n > 0 do 1 да 12 0 1 2 3 4 5 1 2 3 4 12 1 2 3 да 6 000 0001 00011 00 3 да 1 да 0 нет
2410=110002 Выводим результат: write (‘Число ’,n2,‘ в системе счисления ‘,q, ‘ =’); for i:= kol_zifrdownto 1 do write(zifri[i]); Число 24 в системе счисления2 = 1 2 3 4 5 00011 1 1 0 0 0
Решим задачу двумя способами 2способ: Обозначим заданное натуральное десятичное число –n, запоминаем его для вывода ответа – n2, основание системы счисления, в которую нужно перевести число – q, новое число (как строка) – n1, цифра – zifra, цифра (как строка) – szifra.
Как изменится наша программа? kol_zifr := 0; n2:=n; while n > 0 do begin {увеличиваем значение kol_zifr} kol_zifr := kol_zifr + 1; {определяем очередную цифру} zifri[kol_zifr ] := n mod q; {определяем целочисленное частное} n := n div q end; {выводим ответ:} write (‘Число ’,n2,‘ в системе счисления ‘,q, ‘ = ’); for i:= kol_zifrdownto 1 do write(zifri[i]); n1:=‘’; {определяем очередную цифру} zifra := n mod q; {преобразуем ее в строкуи дописываем ее к значению n1} str(zifra, szifra);{цифры в обратном порядке:} n1 := szifra + n1; write(n1);
Какой способ лучше? Почему? Домашнее задание: 1.Написать программу для решения задачи (2 способа): «Сколько единиц в двоичной записи числа а?» 2.*Как преобразовать программу, чтобы число n переводилось в 16-ричную систему счисления?
Практическая работа на компьютере: • Ввод программы, отладка и тестирование.
Источники • Д.М. Златопольский «ЕГЭ по информатике. Решение задач по программированию». СПб.: «БХВ-Петербург», 2013. • http://book.kbsu.ru/theory/chapter4/1_4.html