Всем привет! Поздравляю! Вы прошли в полуфинал базового этапа нашего курса - марафона!
Напомню, что по многочисленным просьбам в декабре был открыт этот образовательный канал для создания курса прорыва в живую информатику
Материал курса основан на популярных практических курсах центра «Севастополь Информатика», открытого в 2019 году в Севастополе. Программы центра – это авторские специальные экспресс-курсы для успешного освоения всех тем в it-сфере! Я, автор курса, буду рада живым откликам, пожеланиям, творческому диалогу и поддержке канала!
Итак, идём дальше и сегодня, на 11 уроке, заканчиваем разбирать последний раздел темы кодирования. На предыдущих десяти уроках мы подробно и максимально просто разобрались в этой непростой теме и надеюсь, поняли принципы кодирования таких видов информации, как символы, графика, звук, переводя их в цифру. Но саму цифру в ПК и её представление в коде мы рассмотрим на сегодняшнем ключевом уроке и этот шаг вас заметно приблизит к победе на ОГЭ и ЕГЭ. Тема кодирования чисел называется системой счисления и традиционно считается самой трудной, скучной, ненужной, но именно этой теме на всех экзаменах уделяется особенное внимание и любая задача может быть построена на знании этого раздела информатики. Поэтому без данного раздела полной победы не видать. Например, на прошлых практикумах, мы программировали на Python и если помните, многие задания были основаны на представлениях чисел в различных системах счисления. К заданиям, охватывающим эту тему, относятся в ОГЭ - №10; в ЕГЭ – № 2, 5, 8, 13, 14, 15, 25. Как видите, тема популярная и надо её понимать. Что значит системы счисления? Давайте разбираться.
Счисление – синоним слова счёт (считать). Наша жизнь – сплошные подсчёты: сколько денег осталось на кредитке, какой % кэшбэка, сколько дней осталось до экзаменов, какой средний балл, сколько осталось гигов из лимита internet и т.д. И мы всё время имеем дело с числами, в которых прописана вся наша жизнь, начиная от даты рождения. “ Цифра правит миром” (Б. Паскаль). Многие учёные докопались в исследованиях до удивительных открытий о значении цифры в судьбе человека, его индивидуальности, его программе жизни и мн. др. Кто и когда помог человеку придумать цифровой ряд. Ведь языков и наречий множество, а цифры едины для всех. Даже самый главный ресурс жизни – время - это цифровое отображение жизненного пути.
В рамках нашего курса слишком глубоких исследований приводить не будем, ведь как говорили древние: "история всё равно солжёт". Возьмём ключевые моменты. Жизнь – сплошной взаимообмен. Ты взял, ты отдал. А сколько осталось? Как не забыть, как сохранить, как это отобразить? Раньше мерили зарубками, камнями, разного рода метками т.е. была единица счёта одного вида. Затем присмотрелись к такому инструменту как собственные руки и создали систему счёта на их основе при помощи комбинаций пальцев. Это не безызвестная римская система, которая до сих пор не ушла в историю и красиво дополняет реальность. Были также ещё разные попытки древних цивилизаций просчитать мир. Как всегда в жизни ничего не стоит на месте и человечество придумало цифровой ряд, назвав его арабским. Интересен тот факт, что 0 был придуман последним, а затем оказался впереди, хотя в числах он всегда в конце и никогда не бывает вначале. Много разных исторических неоднозначностей по поводу принадлежности современной системы счёта к арабскому авторству, но это не суть важно. Считаю, что всё в мире создано Творцом и мы в том числе.
Итак, нам дано в пользование десять базовых (основных) цифр дискретного (последовательного, конечного) ряда: 0 1 2 3 4 5 6 7 8 9. Это ряд из десяти цифр - десятичный ряд. Из этих цифр мы строим числа (алгоритмические) по определённой схеме – позициям. Каждая цифра в зависимости от места расположения в числе имеет разную величину – порядок. Всё это вместе называется десятичной системой счисления. Т.о. десятичная система счисления – система обозначения величин (чисел), построенная на базе десяти цифр и правил их позиционного размещения.
Например, 2025. В числе используются две цифры 2. Цифра одна, но величины у неё разные. Они зависят от положения (позиции) цифры в числе с конца. Чем дальше цифра, от конца числа, тем выше её значение? Во сколько? В 10 раз на каждую позицию. Т.о. первая (слева) двойка числа имеет величину 2000, а вторая 20. Смотрим: 20 (*10) 200 (*10) 2000.
Система счисления, в которой величина цифры числа определяется позицией, называется позиционной. Этот тип систем стал эволюцией в развитии человечества.
Все системы счисления, созданные ранее, относятся в непозиционным и цифры у них имеют только одну величину. Например 2025 по-римски будет представлено MMXXV. где M-1000 X-10 V-5.. Где бы ни находилась цифра, она везде принимает одинаковое значение.
А теперь, давайте разложим 2025 по полочкам – по позициям, начиная с конца, с младших позиций (разрядов): 5*10^0+2*10^1+0*10^2+2*10^3=5+20+0+2000=2025. Что заметно? То, что порядок цифр в числе начинается с 0 (с конца числа) и увеличивается на +1 (одну позицию) влево и номер позиции является степенью десяти для каждой цифры. Т.о. любое наше обиходное десятичное число можно представить суммой составляющих чисел, каждое из которых является произведением цифры на 10 в степени номера позиции (разрядности ) данной цифры. Вот это и всё, что надо понимать в системах счисления, а остальное построено на этом принципе в любой системе счисления.
Человек мыслит десятичными величинами, Но компьютер должен их привести к бинарному формату (01). Если для символов существуют кодовые таблицы алфавитных рядов с кодовыми словами, то для чисел такая система кодирования не подойдёт, так как она будет несоизмеримо велика и индексация такой системы кодирования абсолютна неэффективна.
Поэтому надо было что-то придумать для кодировки чисел без индивидуальных кодов. И вот снова, в который раз, возвращаемся к нашему показательному уравнению и определению единицы информации, где бит является снятием неопределённости информации вдвое (при половинном делении). Вспоминаем, как определить месяц из 12 месяцев. Мы знаем по уравнению, что i=4, надо задать до 4 вопросов. Я загадала февраль. Давайте зададим мне таких четыре оптимальных вопроса с целью узнать этот месяц. Первый вопрос может звучать так: этот месяц по счёту идёт после шестого? Нет. Второй вопрос: этот месяц по счёту после третьего ? Нет. Этот месяц по счёту после второго? Нет. Этот месяц идёт после первого? Да. Это февраль. Т.о. мы докопались до сути постоянно уменьшая вдвое выбор возможных событий. А теперь попробуем применить этот алгоритм для кодирования чисел. Например возьмём любое число, к примеру 12. Разделим его на два. Если оно делится на два, то остаток 0. Осталось 6. Делим шесть на два, остаток 0. Осталось 3. Делим на два, остаток 1. Осталось 1. Старшие разряды после младших идут справа налево: во всех системах счисления, как и в десятичной, поэтому результат 1100. Мы получили код числа 12 в ПК 1100. Но поскольку в ПК побайтовая адресация, то незначащие позиции заполнятся нулями и получаем 0000 1100 код числа 12. Код представлен в так называемой двоичной системе счисления. Мы рассмотрели вариант кодирования половинным делением.
Этот механизм лежит в основе машинного кодирования десятичных чисел в ПК. Но для учебной практики это трудоёмкий процесс, поэтому показываю ручной способ перевода десятичных чисел в двоичные. Он построен на тех же принципах, что и представленный выше пример с 2025 в десятичной системе.
Возьмём наше число 12 . Как по основному показательному уравнению его можно представить по основанию два? 2^4 _ _ _ _ (i=4 разряда от 0 до 3). Какое наибольшее ближайшее число к 12 можно получить при возведении 2 в степень? Это - 2^3=8. Значит пишем в ЭТОМ ТРЕТЬЕМ РАЗРЯДЕ 1. Затем находим остаток 12-8=4. Это 2^2. Пишем во втором разряде 1. Остальные позиции (разряды) заполняем нулями. Разряды нумеруются от младшего к старшему справа налево 3 2 1 0.
1*2^3+1*2^2+0*2^1+0*2^0=12. Как видите, представление двоичного числа аналогично десятичному числу, только цифры числа 0 1 , а основание не 10, а 2.
Вот так всё на самом деле просто. А теперь решим ещё одно задание. Возьмём число 79 и представим его в двоичной системе.
Ближайшее к 79 число 128 (2^7). Значит в представлении числа 7 разрядов. От 0 до 6 разряда. _ _ _ _ _ _ _. Начинаем со старшего. Ближайшее число по основанию два в степени 6 – 64=2^6. Пишем 1 в данном разряде: 1 _ _ _ _ _ _. Находим остаток 79-64=15. Ближайшее к 15 число по основанию два в степени 3 - 8=2^3, т.е. в 3-ем разряде пишем 1, а в пропущенных 5 и 4 разрядах пишем 0. Получаем 1001 _ _ _ . Остаток 15-8=7. Ближайшее число к 7 – 4 как 2^2. Во втором разряде пишем 1. Получаем: 10011_ _. Остаток 7-4=3. Ближайшее 2^1. В первом разряде пишем 1. Получаем 100111 _. Остаток 3-2=1. Это 2^0. В нулевом разряде пишем 1. Получаем 1001111. Это двоичное представление десятичного числа 79. А теперь переведём полученный двоичный код в десятичный. 1001111. Единицы в 6, 3, 2, 1, 0 разрядах, значит 2^6+2^3+2^2+2^1+2^0=64+8+4+2+1=79.
Для удобства ориентации в двоичных числах помните, что в каждом последующем разряде число будет в два раза больше 8 4 2 1.
При переводе чисел в двоичную систему можно просто использовать двоичные тетрады 8 4 2 1 или ряды 1024 512 256 128 64 32 16 8 4 2 1, последовательно собирая число из величин ряда.
· 0001 1
· 0010 2
· 0011 3 2+1
· 0100 4
· 0101 5 4+1
· 0110 6 4+2
· 0111 7 4+2+1
· 1000 8
· 1001 9 8+1
· 1010 10 8+2
· 1011 11 8+2+1
· 1100 12 8+4
· 1101 13 8+4+1
· 1110 14 8+4+2
· 1111 15 8+4+2+1
Например, число 37. Смотрим или представляем ряд и выбираем из него 32 4 1. На этих позициях 1, а остальных 0. Получаем 1 0 0 0 1 0 1. Всё просто!
А теперь немного о других системах счисления. Кроме двоичной системы счисления в ПК может использоваться 8-ричная и 16-ричная системы как вспомогательные для упрощения чтения и анализа машинного кода. Чем они отличаются от двоичной и десятичной? Да, правильно, количеством базовых цифр и основанием при представлении, а все рассмотренные механизмы перевода их системы в систему аналогичны и универсальны для всех систем счисления. Единственную особенность имеют системы счисления, начиная с 11-ричной, так как в состав базовых цифр входят одинаковые комбинации, что недопустимо при кодировании, поэтому начиная с 11-ричной системы счисления, базовые цифры больше 9 представлены буквами A-10 B-11 C-12 D-13 E-14 F-15
Рассмотрим на примерах эти системы.
Итак, возьмём десятичное число 49. Его надо перевести в 8-ричную систему счисления. Можно методом последовательного деления по основанию 8, а можно методом тетрад или ряда: 512 64 8 1. Ближайшее к 48 цифра 8. Если в двоичной кодировке кроме 0 и 1 других цифр нет и мы просто поразрядно прописывали 1 или 0 в разрядах степеней двойки, то в других системах счисления мы можем использовать любую базовую цифру для сборки числа. В данном примере 48/8=6, значит можно использовать в первом разряде 6, а во втором 49-48=1 – 1. Т.о. 49(10)® 61(8). Теперь сделаем обратный перевод из 8-ричной в 10-ричную числа 61. 1- нулевой разряд, 6 – первый разряд; представим по аналогии с примером 2025: 6*8^1+1*8^0=49. Т.е. разряд - всегда степень основания, а 6 и 1 это множители для представления числа.
Ещё один пример 125 в 10-ичной системе надо представить в 8-ричной. Ближайшее из ряда : 512 64 8 1 - 64 – это 2 разряд, пишем 1, а не 2, так как при 2 будет 128. Получаем 1 _ _ .Остаток 125-64=61. В первом разряде степень 8^1; поэтому найдём множитель при целочисленном делении: 61/8=7. Получаем 17_. Остаток 61-56=5 записываем в нулевой разряд. Получаем 175. Теперь сделаем обратный перевод 175(8)=1*8^2+7*8^1+5*8^0=64+56+5=125.
Вот так легко можно положить на лопатки любую систему счисления.
Давайте проверим на 16-ричной системе наши приёмы преобразований. Возьмём число 320 в десятичной системе счисления и представим его в 16-ричную систему. Ряд будет выглядеть 16^2 16 1 . 16^2 (2^8=256) близко к 320, поэтому берём второй разряд весь 256, получая 1_ _. Остаток 320-256=64. Находим множитель для первого разряда 64/16=4, получая 14_. Остаток 64-64=0, поэтому последний разряд 0. Ответ 140 (16). Делаем обратный перевод 140(16)=1*16^2+4*16^1+0*16^1=256+64+0=320(10)
И ещё давайте возьмём одно число, чтобы в кодировке были не только цифры, но и буквы, например десятичное число 107 и представим его в 16-ричной системе счисления. Из ряда 256 16 1 ближе к 107 цифра 16. В первом разряде будет 107/16=6 6_. Остаток 107-96=11(B) .Получаем в ответе 6B. И делаем обратный перевод для повторения. 6B(16)= 6*16^1+11*16^0=96+11=107(10).
После такого прозрачного разбора, надеюсь, все страхи перед словосочетанием «системы счисления» в информатике навсегда уйдут в прошлое.
И ещё немного о разных хитростях при сравнении чисел разных систем счисления.
Например, вам даны в задании некие числа, относящиеся к разным системам счисления:
110111001(2) и 14F(16) и вам надо поставить между ними знак > <=. Для упрощения решения с переводами можно привести числа к одной (большей или меньшей системе счисления) с учётом их построения. Так, например, в 8-ричной системе счисления число будет тождественно трем разрядам двоичного числа - триаде, так как 2*2*2=8, а в 16-ричной - тетраде, так как 2^4=16. Итак, представим 2-ичное число в 16-ричной системе, разбив его на тетрады; получим 0001 1011 1001, обратите внимание на первую тетраду, в которой мы доставили незначащие нули, не 1000, а 0001. Теперь каждую тетраду запишем в десятичном представлении 1 11 9 и затем в 16 –ричной интерпретации 1B9. 1B9 > 14F, так как его второй разряд больше (B>4). 110111001(2) > 14F(16
Еще один пример на сравнение с 8-ричными числами. Например дано одно число 4-ричное 12302 , а другое 8-ричное - 670. Надо их сравнить. В данном случае оба числа нужно привести к двоичной системе. 4-ричная цифра будет содержать две цифры двоичные, переводим и получаем 01 10 11 00 10 . Переводим 8-ричное в 2-двоичное при помощи триад: 110 111 000. А теперь сравним 1 1011 0010 (4) и 1 1011 1000 (8). 8-ричное больше, так как в последней тетраде старший разряд 1>0. 12302(4)< 670(8).
Подводим итоги:
Название системы счисления определяется количеством базовых цифр в её составе.
В позиционных системах счисления величина цифры определяется её позицией (разрядностью) и младший разряд всегда последний в числе.
Число любой системы счисления можно представить в десятичную при помощи сумм произведений каждой цифры числа на основание системы в степени порядка цифры.
5*10^0+2*10^1+0*10^2+2*10^3=5+20+0+2000=2025. 5,2,0,2 – цифры 10- основание ^ 0 1 2 3 степени - разрядность цифры в числе.
1100(2)®0*2^0+0*2^1+1*2^2+1*2^3=0+0+4+8=12(10) 1 1 0 0 – цифры 2 – основание ^ 0 1 2 3 степени – разрядность цифры в числе
Для сравнения чисел разных систем счисления используется их соотношение по степени двойки с использованием дуад, триад, тетрад.
И это всё, что нужно знать по системам счисления. А теперь приступим к практике. Для 9 класса рассмотрим 10 зад. ОГЭ, а для 11 класса - 14 зад. ЕГЭ.
На следующем уроке 12 добавим для 11 класса зад. 5 ЕГЭ, объединяющее тему систем счисления и алгоритмику и ряд нестандартных задач-головоломок для закрепления последней темы по кодированию информации в ПК.
Задание 1. ОГЭ 9 класс. Зад.10
Среди приведённых ниже трёх чисел, записанных в различных системах счисления, найдите два наибольших и запишите в ответе их сумму в десятичной системе счисления. В ответе запишите только число, основание системы счисления указывать не нужно.
49(16), 201(8), 11101000(2)
Решение: самый быстрый способ решения будет при переводе каждого числа с учетом тетрад к 16-ричной системе, поскольку код их будет короче для 10-ичного преобразования в суммировании: 1) переводим 2-ичное число (третье) в 16-ричное по тетрадам справа налево (с конца() 1110=14 1000=8 ,т.е. E8; 2) переводим 8-ричное 201 (второе) в двоичное по триадам, а затем в 16-ричное по тетрадам 201(8) = 010 000 001(2) = 0 1000 0001= 81(16); 3) сравниваем три числа в 16-ричном представлении 49 81 E8; второе и третье наибольшие (по старшему разряду), находим их сумму в 10-ичной системе: 81=16*8+1=129; E8=14*16+8=232 129+232=361. Ответ: 361
Задание 2. ОГЭ 9 класс. Зад.10
Число 1551(n) записано в системе счисления с основанием n (n>1). Определите наименьшее возможное значение n. Для этого значения n в ответе запишите представление данного числа в десятичной системе счисления. Основание системы счисления указывать не нужно.
Решение: число 1551 можно отнести к различным системам счисления, начиная с 6-ричной; но поскольку требуется найти минимальное n, то берём 6-ричную систему счисления и представляем исходное число в 10-ричное: 1*6^0+5*6^1+5*6^2+1*6^3=1+30+180+216=427. Ответ: 427
Задание 3. ОГЭ 9 класс. Зад.10
Число 141(n) записано в системе счисления с основанием n (n>1). Определите наибольшее возможное значение n, для которого 141(n)<105(10). Для этого значения n в ответе запишите представление данного числа в десятичной системе счисления. Основание системы счисления указывать не нужно.
Решение: 1) представим число 141 по основанию n: 1*n^0+4*n^1+1*n^2=n^2+4n+1; получим квадратное уравнение; подставим справа 104, так как число в условии <105(10) и найдём значение n, решив квадратное уравнение: n^2+4n+1=104; n^2+4n-103=0; 2) дискриминант находим по формуле: b^2–4*a*c; D=(4^2-4*(-103))=16+412=428; ближайшее значение с корнем <428 400; 3) найдём n от D=400 по формуле: (-b +/- D^1/2)/2*a=(-4+20)/2=16/2=8 n=8; 4) представим 8-ричное число 141(8) в десятичное: 1*8^0+4*8^1+1*8^2=1+32+64=97; Ответ: 97
Задание 4. ОГЭ 9 класс. Зад.10
Укажите количество решений неравенства 72(8)<=x<=B1(16)
Решение: 1) для решения неравенств такого рода всегда приводите все числа к десятичной системе счисления по стандартной форме представления 72(8)= 2*8^0+7*8^1=58; B1(16)= 1*16^0+11*16^1=177; 2) получаем неравенство в десятичной системе 58<=X<=177; чтобы найти количество элементов на отрезке [58:177] включаем и 58 и 177, так как есть знак =; количество элементов отрезка определяется по разности значений концов минус 1; k=177-58+1=120; Ответ: 120.
Задания для 9 класса просты и решаются достаточно быстро по приведённым схемам . Для 11 класса задачи с 2024 года усложнили, поэтому берём в помощь Python и максимально ускоряем процесс.
Задание 5.1. ЕГЭ 11 класс. Зад. 14
Операнды арифметического выражения записаны в системе счисления с основанием 11.
1800x6(11)+6x107(11)-1x63(11)
В записи чисел переменной x обозначена неизвестная цифра из алфавита 11-ричной системы счисления. Определите наименьшее значение x, при котором значение данного арифметического выражения кратно 7. Для найденного x вычислите частное от деления значения арифметического выражения на 7 и укажите его в ответе в десятичной системе счисления. Основание системы счисления указывать не нужно.
Решение: задание по сути простое и сводится к представлению чисел в десятичной форме и выполнению простого вычисления; но ручным методом, как вы понимаете, решить его практически невозможно, поэтому пишем код; 1) так как надо найти переменную x, то задаём цикл for с диапазоном для x от 0 до 10, потому что в 11-ричной системе других значений цифр нет; 11, а не 10 задаём как конец интервала, так как запомните: в Python последнее активное значение диапазона берется на 1 меньше указанного; 2) во 2,3,4 строках кода каждое исходное число представляем в десятичной системе счисления; степень в Python задаётся ** и имеет приоритет выше *, поэтому скобки не нужны; 3) в 5 строке кода проверяем условие кратности исходного выражения при данном x в цикле; для проверки кратности используем остаточное деление на 7 при помощи операции %; 4) при печати результата используем целочисленное деление // для представления числа без дробной части; 5) так как требуется найти минимальное значение x по условию задания, то в строке 7 используем оператор break после печати для прерывания цикла; запомните: оператор break осуществляет прерывание цикла и переход к следующему за ним оператору.
Задание 5.1. ЕГЭ 11 класс. Зад. 14
Операнды арифметического выражения записаны в системе счисления с основанием 23.
2xx341011(23)+220x4(23)+110x6(23)
В записи чисел переменной x обозначена неизвестная цифра из алфавита 23-ричной системы счисления. Определите наименьшее значение x, при котором значение данного арифметического выражения кратно 22. Для найденного x вычислите частное от деления значения арифметического выражения на 22 и укажите его в ответе в десятичной системе счисления. Основание системы счисления указывать не нужно.
Решение: задание аналогично предыдущему, однако при выполнении с числами более 16-ричной системы могут не выполняться из-за ограничений в ресурсах ПК, поэтому показываю для таких случае решение с использованием строковых переменных; 1) в цикле мы прописываем не диапазон чисел, а массив возможных значений символов для 23 -ричной системы счисления (1 строка); по f для 16-ричной и + ещё 7 букв до 23-ричной 2) во 2,3,4 строках используем функцию перевода строки в число по указанной системе счисления синтаксис этой функции запомните: int('строка', система счисления); строку собираем обычной операцией сложения (конкатенации); поскольку x - строковая переменная, то просто прибавляем её без кавычек в наборе строки; т.о. в одной команде выполняем и сборку строки и перевод её в число по указанной системе счисления - 23; 3) затем проверяем кратность и выводим результат с прерыванием цикла. Данное решение является наиболее популярным при больших системах счисления; в Python строки многофункциональны и очень часто используются для решения разного рода хитрых заданий с ограничениями.
Задание 6. ЕГЭ 11 класс. Зад.14
Значение арифметического выражения
243^540 - 6* 9 ^530 + 21* 3^511 – 3* 3^70 -200
записали в системе счисления с основанием 9. Определите количество цифр 8 в записи этого числа.
Решение: простое задание, суть задания в том, чтобы десятичное число перевести в 9-ричное и посчитать сколько цифр 8 будет в его 9-ричной представлении. Ручным методом решается, но гораздо дольше и ненадёжно, поэтому прибегнем к Python; 1) исходное выражение - это представленная в десятичной форме запись числа; поэтому задаём переменной x его значение в строке 1; 2) во 2 строке задаём нулевой счётчик; 3) в 3 строке используем оператор цикла while (пока истина) для повтора операций в теле цикла пока x не равен 0; в синтаксисе Python можно задать короткую форму условия в while - while x; в отличие от оператора цикла for while используется, если задаётся не диапазон, а условие; 4) в 4 и 6 строке мы имитируем алгоритм преобразования числа из 10-ичной в 9-ричную систему путём последовательного деления чисел на основание заданной системы счисления - 9 (как при самом простом ручном преобразовании) и если значение остатка (используем %) равно цифре 8, то подсчитываем их в счётчике (строка 5); в 6 строке мы имитируем переход к следующему числу, полученному на каждом этапе деления при помощи целочисленного деления // x//=9;
Задание 7. ЕГЭ 11 класс. Зад.14
Значение выражения: 243^5 + 3^7 – 2 – X записали в системе счисления с основанием 3, при этом в записи оказалось ровно 20 цифр <2.> При каком минимальном целом положительном X это возможно?
Решение: задание похоже на предыдущее, но количество цифр уже известно, а переменную X в выражении надо найти; в этом задании как бы совмещаются два предыдущих и мы используем не только while цикл для подсчёта количества цифр, но и for цикл для перебора значений для переменной X; 1) первые две строки уже должны быть понятны, но в range (диапазоне) указываем конечное значение грубо до 1000000, не принципиально, так как ищем минимальное X; при максимальном можно проиграть код с разными увеличениями; 2) до восьмой строки практически повторяется предыдущая программа, где число переводится в 3-ичную систему и подсчитываются 2 двойки, но нам дано по условию, что их количество равно 20, поэтому после цикла перевода выражения 3-иичное при данном X проверяем значение счётчика (k) на 20 (строка 8); 3) первое подходящее x при k=20 выводим в print и выходим из цикла break; единственный момент, где часто допускается ошибка – это строки 11 и 12; если переменная x при итерации в for не подошла, то надо обнулить счётчик для следующего x, поэтому используем полную форму условного оператора if условие: операции else: операции
Усложняем задания:
Задание 8. ЕГЭ 11 класс. Зад.14
Операнды арифметического выражения – числа M и N записаны в системах счисления с основанием 15 и 13
M=2y23x5(15) N=67x9y(13)
В записи чисел переменных x и у обозначены допустимые в данных системах счисления неизвестные цифры. Определите наименьшее значение числа A, при котором существуют такие x и y, что сумма M+A кратна N.
Решение: в данном задании две переменные используются x и y в выражениях, поэтому создаём для них два цикла for c диапазоном наибольшей системы счисления с учётом особенностей границ в Python. Но помимо x и y надо подобрать такую третью переменную A, чтобы сумма первого числа с A была кратна второму числу. 1) Задание частично похоже на 5 задание, но усложнено двумя переменными. В такого рода задачах приоритет переменной и цикла по ней определяется условием - определите наименьшее значение числа A, поэтому цикл по A внешний (строка 2), а диапазон берём условно до 1000000 с учетом поиска минимального значения; 2) в 7 и 8 строках представляем исходные числа в десятичной форме поразрядно; в 9 строке проверяем кратность ;3) обращаю внимание на строки 1, 3, 5, 10, в которых используем переменную f для выхода из циклов при нахождении первого подходящего значения переменной A – это своего рода логический флаг; исходное значение для f задаём 0, а при нахождении A присваиваем f значение 1, что обеспечивает останов всех трёх циклов при использовании условного оператора if в строках 3 и 5.
И ещё несколько нестандартных задач по этой теме. От фипишников можно ожидать чего угодно, поэтому приведу ряд задач на ручное решение + логическое включение.
Задание 9. ЕГЭ 11 класс. Зад.14
Укажите сумму всех положительных десятичных чисел, не превосходящих 27, запись которых в 3-ичной системе счисления заканчивается на 21
· Данные задания быстро решаются по схеме перевода в системы счисления по ряду вручную.
Решение: данное задание решим вручную; 1) если речь идёт о 3-ичной системе , значит для фильтра представим 27 как ориентир в 3-ичной системе, пользуясь рядом 27 9 3 1, получаем 27(10)=1000(3) , т.е. максимальное 3-ичное будет с учетом 21 на конце - 321 2) теперь, зная разрядность и окончание на 21 чисел рассмотрим все возможные комбинации троичного представления 21 121 221 321 ; 3) переводим каждое в 10-ичное 21(3)=7(10) 121(3)=1*3^2+2*3^1+1*3^0=16(10); 221(3)=2*3^2+2*3^1+1*3^0=25(10); 321(3)=3*3^2+2*3^1+1*3^0=34(10); 4) надо найти сумму чисел, не превосходящих 27: 7+16+25=48 Ответ: 48
Задание 10. ЕГЭ 11 класс. Зад.14
Укажите наибольшее трёхзначное 5-ричное число, запись которого в 4-ричной системе счисления содержит три единицы.
Решение: ручное решение и для начала определим, какое самое большое трёхзначное 5-ричное число может быть: 444; переведём его в 10-ичное 4*25+4*5+4=124; теперь представим 124 через двоичную (для быстрого перевода) и переведём его в 4-ричную 64 32 16 8 4 1111100 (2); можно ещё быстрее 127 – 3 =124; из 7 разрядов два последних 00 (3) 1111100(2); по дуадам переведём полученное число в 4-ричное 01 11 11 00 (1330) 3) а теперь анализируем число 1330(4); нам надо найти максимальное и в нём должно быть три единицы; значит во втором старшем разряде оставляем 3, два остальных заменяем единицами, так как надо три единицы 1311 (4); 4) переводим число 1311(4) в 10-ичную систему 4^3+3*4^2+4+1=117; 5) переводим 117 в 5-ричную из ряда 25 5 1 - 4*25 +3*5 +2, т.е. 432(5) Ответ 432
Задание 11. ЕГЭ 11 класс. Зад.14
Какое 8-ричное число находится ровно посередине между числами С8(16) и 11010100(2). В ответе напишите только само число в 8-ричной системе счисления. Основание системы счисления писать не нужно.
Решение: переводим оба числа в 10-ичное представление С8=12*16+8=200; 11010100(2)=128+64+16+4=212; 2) какое число между 200 и 212 посередине - 206;3) переводим 206 в 8-ричное представление (64 8 1 ряд) 3*8^2=64*3=192; 206-192=14; 14/8=1; (1*8^1) 14-8=6; получаем 3*8^2+1*8^1+6= 316(8); Ответ: 316
Задание 12. ЕГЭ 11 класс. Зад.14
Некоторое число X перевели из 10-ичной в 16-ричную , 8-ричную и 4-ричную системы счисления. Часть символов при записи утеряна. Позиции утерянных символов обозначены знаком *. Определите число X.
X=*7*(16) X=5*6 (8) X=***1*(4)
Решение: если вы внимательно прочли весь материал урока, то решение не составит труда; так как достаточно привести все числа к 2-ичной системе счисления и ответ готов; 4-ричное число будет представлено как *****01**; 8-ричное - *101***110; 16-ричное как **0111**** ; а теперь подставим числа в ряды и найдём цифры по известным позициям в каждой форме представления, так как это одно и то же число; получим число 101110110(2); переводим его в 10-ичное 256+64+32+16+4+2=374. Ответ: 374.
И, как всегда, напоследок домашнее задание:
Задание 1: Некоторое число X перевели из 10-ичной в 16-ричную и 8-ричную системы счисления. Часть символов при записи утеряна. Позиции утерянных символов обозначены знаком *. Сколько чисел соответствует (подходит) условию задачи? X=*5 (16) X=*0*(8)
Задание 2: Найдите минимальное трёхзначное 8-ричное число, запись которого в 2-ичной системе счисления содержит три единицы.
Ответы 1-5; 2-103
На этом урок закончен! Вот так за один урок мы с вами постигли все премудрости этой самой страшной темы информатики. Надеюсь, всё понятно и легко. А если не совсем, то не сдавайтесь, пишите, задавайте вопросы, приходите к нам на курсы!
Не забываем об энергообмене! Подписываемся и если есть возможность помогаем каналу быть для вас!
Для тех, кто с нами и всё решил !