Программирование. Задание 14. Системы счисления (позиционные). Системы счисления (основные позиционные)
Скачать 244.51 Kb.
|
Задание 14Позиционные системы счисления. Повышенный уровень сложности Рек. время на выполнение – 3 минут Системы счисления (основные позиционные)
Важно знать:
Важно знать: Правила формирования ряда чисел в позиционных системах счисления Перевод чисел в десятичную СС:1. Посчитать разряды числа справа налево от нуля: 6 5 4 3 2 1 0 11000112- основание системы счисления в которой дано число. 2. Записать число в развернутой форме: Сносим разряд, умножаем на основание СС возведенное в степень порядкового номера разряда + следующий разряд …… : 11000112 = 1*26 + 1*25 +0*24 + 0*23 + 0*22 + 1*21 + 1*20 = =64+32+0+0+0+2+1 = 99 N0=1; N·0=0; N1=N Важно знать: Перевод чисел из десятичной СС :Для перевода из десятичной системы счисления необходимо делить данное число (целочисленное деление в столбик) и полученные новые частные на новое основание, последовательно выделяя остатки до того момента, пока последнее частное не будет равно 1. И начиная с этого частного записать все остатки в обратном порядке. Важно знать:
Выполняя перевод напрямую помни:
Важно знать:
Важно знать:
число aN в системе счисления с основанием a это единица и N нулей:Демо 2015Сколько единиц в двоичной записи числа 519?Решение 11000000111Решение 2519=512+7, 512 = 29 – это 1 единица и 9 нулей. Число 7 в двоичном представлении содержит 3 единицы.1+3=4Решение 3. Pythonx = bin(519)print( x.count( '1' ) )Ответ: 4 bin -2 oct – 8 dec – 10 hex - 16 Демо 2016Сколько единиц в двоичной записи шестнадцатеричного числа 12F016?Решение 112F016 = 1 0010 1111 00002Ответ: 6 Демо 2017Сколько существует натуральных чисел x, для которых выполненонеравенство 110111002 < x < DF16?В ответе укажите только количество чисел, сами числа писать не нужно.РешениеПеревести число DF16 в двоичную систему счисленияDF16 = 110111112Числа 110111002 и 110111112 отличаются двумя младшими разрядами.Между ними только два числа 110111012 и 110111102Ответ: 2 Демо 2015Укажите наименьшее четырёхзначное шестнадцатеричное число, двоичная запись которого содержит ровно 6 нулей. В ответе запишите только само шестнадцатеричное число, основание системы счисления указывать не нужно.РешениеПредставим шестнадцатеричное число в двоичной системе счисления.Найдем минимальное четырёхзначное число, содержащее 6 нулей.1 0000 0011 11112Переведем найденное число в шестнадцатеричную систему счисления103F16Ответ: 103F Демо 201542014 + 22015 – 8Решение 1Приведем все числа к степени 242014 + 22015 – 8 = (22)2014 + 22015 - 23 = 24028 + 22015 – 23Число 22015 – 23 содержит 2015 – 3 = 2012 единицЧисло 24028 содержит ровно 1 единицуВсего: 2012 + 1 = 2013 единицРешение 2x = bin(4**2014+2**2015-8)print( x.count( '1' ) )Ответ: 2013 2016Сколько единиц в двоичной записи числа (2 × 108)2010 – 42011 + 22012Решение 1108 = 8 десПриведем все числа к степени 2162010 – 42011 + 22012 = (24)2010 – (22)2011 + 22012 = 28040 – 24022 + 22012Число 28040 – 24022 содержит 8040 – 4022 = 4018 единицЧисло 22012 содержит ровно 1 единицуВсего: 4018 + 1 = 4019 единицРешение 2x = bin((2*int('10',8))**2010-4**2011+2**2012)print( x.count( '1' ) )Ответ: 4019 УравненияРешите уравнение 608 + x = 1207, Ответ запишите в шестеричной системе счисления.Решение 1: Переведем все числа в десятичную систему счисления 608 = 48 1207 = 63Решим уравнение 48 + x = 63 x = 15 1510 = 236Решение 2: преобразуем выражение: х= 1207 - 608x = int('120', 7) - int('60', 8)print('в 10 c.c:', x)s = ''while x:s = str( x%6 ) + sx //= 6print( 'Ответ в 6 с.с:', s )Ответ: 23 УравненияРешите уравнение 122x – 12x = 610Решение 1122x = 1×(2x)1 + 2×(2x)0 = 2x + 212x = 1×x1 + 2×x0 = x + 2Получим уравнение2x + 2 – x – 2 = 6x = 6Решение 2. Писать программу нет смыслаОтвет: 6 2015. Решение 11)т.к. запись в системе счисления с основанием N заканчивается на 1, то остаток от деления числа 67 на N равен 1, т.е:Значит основание N- делитель числа 662) запись числа содержит 4 цифры:3) выпишем кубы и четвертые степени первых натуральных чисел, которые являются делителями числа 66:4) только для числа N = 3 выполняется условиеОтвет: 3 2015. Решение 2Решение2:for N in range(2, 101): # подбираем осн. от 2 до 100x = 67k = 0 # счетчик цифр (разрядов) N-ичного числаwhile x:d = x % N # очередная цифра (digit)k += 1if k == 1: d0 = d # d0 - младшая цифраx //= Nif d0 == 1 and k == 4:print( N )breakОтвет: 15 Демо 2014Укажите наименьшее основание системы счисления, в которой запись десятичного числа 30 имеет ровно три значащих разряда.РешениеОбозначим основание искомой системы счисления как x.Тогда100x ≤ 3010 < 1000xx2 ≤ 3010 < x3x = 4 x = 5Наименьшее основание x = 4Ответ: 4 Демо 2020Сколько единиц содержится в двоичной записи значения выражения: 48 + 28 – 8?Решение 1216 + 28 – 23 – стоят в порядке убывания степеней8-3+1=6Решение 2x = bin(4**8+2**8-8)print( x.count( '1' ) )6 Демо 2021Значение арифметического выражения: 497 + 721 – 7 записали в системе счисления с основанием 7.Сколько цифр 6 содержится в этой записи?13 Приведём все числа к степеням «7»: 714 + 721 – 71 расставим степени в порядке убывания: 721 + 714 – 71 Шестерки в разности: 714 – 71, количество:14-1=13 Без символьных строк: x = 49**7 + 7**21 - 7 count6 = 0 while x: if x % 7 == 6: count6 += 1 x //= 7 print( count6 ) С символьными строками: x = 49**7 + 7**21 - 7 x6 = '' while x: x6 = str(x%7) + x6 x //= 7 print(x6.count(‘6') ) Вопрос 14Укажите через запятую в порядке возрастания все десятичные числа, не превосходящие 25, запись которых в системе счисления с основанием четыре оканчивается на 11? Анализируем условие: • младшая цифра результата – это остаток от деления исходного числа на N , а две младших цифры – это остаток от деления на N2 и т.д. • здесь N=4, остаток от деления числа на N2 должен быть равен 114 = 5 • задача сводится к тому, чтобы определить все числа, которые меньше или равны 25 и дают остаток 5 при делении на 16 Вопрос 14. 1 способУкажите через запятую в порядке возрастания все десятичные числа, не превосходящие 25, запись которых в системе счисления с основанием четыре оканчивается на 11? 1 способ
2 способ 1) в четверичной СС 25=1214 , подходящие нам числа не больше 1214 2)Нам нужны числа оканчивающиеся на 11, это 114 и 1114. 114= 5; 1114 =21 Вопрос 14. 2 способУкажите через запятую в порядке возрастания все десятичные числа, не превосходящие 25, запись которых в системе счисления с основанием четыре оканчивается на 11? for i in range(1,31):# перебираем ответы x = i x4 = '' while x > 0:# перевод в 4-ю систему x4 += str(x%4) x //=4 x4 = x4[::-1]# разворот числа if x4[-2:]== "11": print(i, end=",") for d in '0', '1': # d - цифра(digit).При d > 1 - выход за 25 # int - переводит из 4-ой в 10-ую систему print( int( d+'11', 4 ), end = ',' ) 3·438+2·428+420+3·45+2·44+1записали в системе счисления с основанием 16. Сколько значащих нулей содержится в этой записи?Демо 2022 x = 3*4**38+2*4**23+4**20+3*4**5+2*4**4+1 c0 = 0 while x: if x % 16 == 0: c0 += 1 x //= 16 print( c0 ) Ответ: 15 ТР 27.10.2021 x = 4**36+3*4**20+4**15+2*4**7+49 d = '' while x: d = str((hex(x % 16)[2:]))+d x //= 16 print( d) Будет напечатано:1000000030040008031 Ответ: 5 |