Главная страница

Программирование. Задание 14. Системы счисления (позиционные). Системы счисления (основные позиционные)


Скачать 244.51 Kb.
НазваниеСистемы счисления (основные позиционные)
АнкорПрограммирование
Дата30.12.2022
Размер244.51 Kb.
Формат файлаpptx
Имя файлаЗадание 14. Системы счисления (позиционные).pptx
ТипДокументы
#869262

Задание 14


Позиционные системы счисления.

Повышенный уровень сложности

Рек. время на выполнение – 3 минут

Системы счисления (основные позиционные)

  • Двоичная: основание2, состоит из 2 знаков – 0;1.
  • Восьмиричная: основание 8, состоит из 8 знаков – 0,1,2,3,4,5,6,7
  • Десятичная: основание 10, состоит из 10 знаков – цифры (арабские) от 0 до 9
  • Шестнадцатеричная: основание 16, состоит из цифр от 0 до 9 и букв лат.алф. От А до F
  • Остальные СС промежуточные, используются только в теоретических задачах(3,4,7,14итд)

Важно знать:

10

2

8

16

0

0000

0

0

1

0001

1

1

2

0010

2

2

3

0011

3

3

4

0100

4

4

5

0101

5

5

6

0110

6

6

7

0111

7

7

8

1000

10

8

9

1001

11

9

10

1010

12

A – 10

11

1011

13

B – 11

12

1100

14

C – 12

13

1101

15

D – 13

14

1110

16

E – 14

15

1111

17

F – 15

16

10000

20

10

Важно знать:

Правила формирования

ряда чисел в позиционных

системах счисления

Перевод чисел в десятичную СС:




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. И начиная с этого частного записать все остатки в обратном порядке.

Важно знать:

10

2

8

16

0

0000

0

0

1

0001

1

1

2

0010

2

2

3

0011

3

3

4

0100

4

4

5

0101

5

5

6

0110

6

6

7

0111

7

7

8

1000

10

8

9

1001

11

9

10

1010

12

A – 10

11

1011

13

B – 11

12

1100

14

C – 12

13

1101

15

D – 13

14

1110

16

E – 14

15

1111

17

F – 15

Выполняя перевод напрямую помни:
  • Любой 8-й знак соответствует 3 двоичным – правило тетрад
  • Любой 16-й знак соответствует 4 двоичным – правило триад
  • Перевод в 10-ю СС и обратно, напрямую невозможен
  • Из 16-й СС в 8-ю СС и наоборот, переводим через 2-ю СС

Важно знать:

  • Последняя цифра записи числа в системе счисления с основанием N – это остаток от деления этого числа на N ;
  • Две последние цифры это остаток от деления на N2, и тд
  • число 2N в двоичной системе записывается как единица и N нулей:
  • число 2N-1 в двоичной системе записывается как N единиц: число 2N–2K при K < N в двоичной системе записывается как N–K единиц и K нулей:

Важно знать:

  • для любой системы счисления с основанием a:
  • число aN в системе счисления с основанием a это единица и N нулей:

  • число aN-1 в системе счисления с основанием a это N старших цифр этой системы счисления, то есть, цифр (a-1):
  • число aNaM = aM · (aN-M – 1) в системе счисления с основанием a : N-M старших цифр этой системы счисления, за которыми стоят M нулей:

Демо 2015

Сколько единиц в двоичной записи числа 519?

Решение 1

1000000111

Решение 2

519=512+7, 512 = 29 – это 1 единица и 9 нулей. Число 7 в двоичном представлении содержит 3 единицы.

1+3=4

Решение 3. Python

x = bin(519)

print( x.count( '1' ) )


Ответ: 4

bin -2

oct – 8

dec – 10

hex - 16

Демо 2016

Сколько единиц в двоичной записи шестнадцатеричного числа 12F016?

Решение 1

12F016 = 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

Демо 2015

42014 + 22015 – 8

Решение 1

Приведем все числа к степени 2

42014 + 22015 – 8 = (22)2014 + 22015 - 23 = 24028 + 22015 – 23

Число 22015 – 23 содержит 2015 – 3 = 2012 единиц

Число 24028 содержит ровно 1 единицу

Всего: 2012 + 1 = 2013 единиц

Решение 2

x = bin(4**2014+2**2015-8)

print( x.count( '1' ) )


Ответ: 2013

2016

Сколько единиц в двоичной записи числа (2 × 108)2010 – 42011 + 22012

Решение 1

108 = 8 дес

Приведем все числа к степени 2

162010 – 42011 + 22012 = (24)2010 – (22)2011 + 22012 = 28040 – 24022 + 22012

Число 28040 – 24022 содержит 8040 – 4022 = 4018 единиц

Число 22012 содержит ровно 1 единицу

Всего: 4018 + 1 = 4019 единиц

Решение 2

x = 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 - 608

x = int('120', 7) - int('60', 8)

print('в 10 c.c:', x)

s = ''

while x:

s = str( x%6 ) + s

x //= 6

print( 'Ответ в 6 с.с:', s )


Ответ: 23

Уравнения

Решите уравнение 122x – 12x = 610

Решение 1

122x = 1×(2x)1 + 2×(2x)0 = 2x + 2

12x = 1×x1 + 2×x0 = x + 2

Получим уравнение

2x + 2 – x – 2 = 6

x = 6

Решение 2. Писать программу нет смысла


Ответ: 6

2015. Решение 1

1)т.к. запись в системе счисления с основанием N заканчивается на 1, то остаток от деления числа 67 на N равен 1, т.е:

Значит основание N- делитель числа 66

2) запись числа содержит 4 цифры:

3) выпишем кубы и четвертые степени первых натуральных чисел, которые являются делителями числа 66:

4) только для числа N = 3 выполняется условие


Ответ: 3

2015. Решение 2

Решение2:

for N in range(2, 101): # подбираем осн. от 2 до 100

x = 67

k = 0 # счетчик цифр (разрядов) N-ичного числа

while x:

d = x % N # очередная цифра (digit)

k += 1

if k == 1: d0 = d # d0 - младшая цифра

x //= N

if d0 == 1 and k == 4:

print( N )

break


Ответ: 15

Демо 2014

Укажите наименьшее основание системы счисления, в которой запись десятичного числа 30 имеет ровно три значащих разряда.

Решение

Обозначим основание искомой системы счисления как x.

Тогда

100x ≤ 3010 < 1000x

x2 ≤ 3010 < x3

x = 4 x = 5

Наименьшее основание x = 4


Ответ: 4

Демо 2020

Сколько единиц содержится в двоичной записи значения выражения: 48 + 28 – 8?

Решение 1

216 + 28 – 23 – стоят в порядке убывания степеней

8-3+1=6

Решение 2

x = 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 способ
  • Общий вид чисел, которые дают остаток 5 при делении на 16: k·16+5, где k – целое неотрицательное число(0,1,2…)
  • Среди ряда чисел нужно выбрать те, что <=25(не превосходят 25); при k=0 это 5, при k=1 это 21

  • 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


написать администратору сайта