§ 1.1. Системы счисления ГДЗ по Информатике 8 Класс
Какое минимальное основание имеет система счисления, если в ней записаны числа 123, 222, 111, 241? Определите десятичный эквивалент данных чисел в найденной системе счисления.
Ответ
Минимальным основанием может быть только 5. Так как самая большая цифра в используемых числах 4 (используемые цифры 0, 1, 2, 3, 4).
Десятичные эквиваленты данных чисел.
1235 = 1 ? 52 + 2 ? 51 + 3 ? 50 = 25 + 10 + 3 = 3810
2225 = 2 ? 52 + 2 ? 51 + 2 ? 50 = 50 + 10 + 2 = 6210
1115 = 1 ? 52 + 1 ? 51 + 1 ? 50 = 25 + 5 + 1 = 3110
2415 = 2 ? 52 + 4 ? 51 + 1 ? 50 = 50 + 20 + 1 = 7110
Переведём все строки-числа в массивы со значениями их цифр. Запишем их задом-наперед. Более короткие дополним нулями:
A: 1A -> [10, 1]
B: 2 -> [ 2, 0]
C: 20 -> [ 0, 2]
Пройдемся слева направо имитируя сложение в столбик. Рассмотрим сумму младших разрядов: если бы переноса не возникло, то A[0] + B[0] == C[0]
. Это не так (10 + 2 != 0
). Значит есть перенос и A[0] + B[0] == base + C[0]
. Можно вычислить основание системы счисления.
В следующем разряде нужно учесть пришедший перенос: A[1] + B[1] + carry == C[1]
. Равенство выполнено, проверять основание не надо.
Продвигаясь по разрядам выполняем сложение в столбик. При каждом переносе проверяем основание – все переносы должны дать один результат. Кроме этого основание должно быть больше всех цифр в во всех трёх числах.
def read_number(s):
alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
return list(map(alphabet.index, reversed(s)))
def align(lists):
max_length = max(map(len, lists))
for l in lists:
l.extend([0] * (max_length - len(l)))
def determine_base(a, b, c):
align((a, b, c))
max_digit = max(a + b + c)
base = None
carry = 0
for ai, bi, ci in zip(a, b, c):
s = ai + bi + carry
if s < ci:
return -1
if s > ci:
if base is None:
base = s - ci
if base <= max_digit:
return -1
if s - ci != base:
return -1
carry = 1
else:
carry = 0
if carry != 0:
return -1
if base is None:
return max_digit + 1
return base
def main():
a, b, c = tuple(map(read_number, input().split()))
print(determine_base(a, b, c))
main()
Ответ – 7.
Максимальная цифра 6, значит, в системе должны существовать цифры 0 1 2 3 4 5 6.
Шестеричная система не подходит, нету 6 (в меньших, разумеется, тоже нету). А вот семеричная подходит! Там как раз цифры от 0 до 6.
Итак, мы доказали, что 7-чная система подходит, а меньшие нет. Поэтому 7 – наименьшее основание.
Формула для любого числа такова: находим максимальную цифру + 1 (работает по тому же принципу)
4,1 K
Комментировать ответ…Комментировать…
поэт, музыкант, математик, инженер, программист, котельщик, электрик, сантехник · 31 окт 2021 ·
Могу предложить троичную систему счисления, в которой есть три цифры для записи чисел: 2, 3 и 6. В троичной системе с символами 0, 1 и 2 это было бы 102, а в десятичной число 11.
166
Комментировать ответ…Комментировать…
В данном случае минимальное основание – 7.
Алгоритм прост – находим в числе “старшую” цифру, в вашем случае это 6 и прибавляем 1 (за счет нуля).
Аналогично, минимальное основание для 110101 – 2
46475 – 8
110А345 – 11.
167
Комментировать ответ…Комментировать…
математик, патриот России, духовный последователь Циолковского · 31 окт 2021
В данном случае это основание есть 7-минимальная система счисления здесь семиричная. Это следует из того, что мы первые 6 символов (цифр) для обозначения каких угодно предметных чисел задаём такими: 0,1,2,3,4,5,6 (в порядке возрастания-от меньшего к большему). Мы видим, что наибольшая из упомянутых цифр числа 326 суть 6, значит, подобно тому как мы в десятичной системе… Читать далее
1,1 K
Комментировать ответ…Комментировать…
О сообществе
Теги: Система счисления, перевод системы счисления, родственные системы счисления
Изменение основания для позиционных систем счисления
В позиционной системе счисления с основанием q число может быть представлено в виде полинома
… + a2∙q2+ a1q1 + a0∙q0 + a-1∙q-1 + a-2∙q-2 + …
где коэффициенты ai – это цифры системы счисления с основанием q.
Например, в десятичной системе счисления
124.733 = 1∙102 + 2∙101 + 4∙100 + 7∙10-1 + 3∙10-2 + 3∙10-3
Число цифр в системе счисления с основанием q равно q, при этом максимальная цифра равна q – 1. Цифра не может стать равной q, потому что в этом случае произойдёт перенос
единицы в новый разряд.
Например, нужно найти минимальное основание системы счисления, в которой записано число 7832. Так как максимальная цифра равна 8, то минимальное значение q = 8 + 1 = 9.
Основанием системы счисления может быть, в принципе, любой число: целое, отрицательное, рациональное, иррациональное, комплексное и т.д. Будем рассматривать только положительные целые основания.
Особый интерес для нас будут представлять основание 2 и основания, являющиеся степенью двойки – 8 и 16.
В случае, если основание с. с. больше десяти, то новые цифры берутся по порядку из алфавита. Например, для 16-ричной системы это будут цифры 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.
Перевод целой части десятичной системы счисления
Первый способ перевода из десятичной системы счисления в n-ричную заключается в последовательном делении числа на новое основание.
12310 → X12
123/12 = 10 (3) 10/12 = 0 (10=A)
Собираем в обратном порядке, сначала последнее значение (это 0), потом сверху вниз все остатки. Получаем 0A3 = A3
456310 → X8
4563/8 = 570 (3) 570/8 = 71 (2) 71/8 = 8 (7) 8/8 = 1 (0)
Собираем обратно, получаем 10723
334910 → X16
3349/16 = 209 (5) 209/16 = 13 (1) 13/16 = 0 (13 = D)
Собираем вместе: 0D15 = D15
54510 → X2
545/2 = 272 (1) 272/2 = 136 (0) 136/2 = 68 (0) 68/2 = 34 (0) 34/2 = 17 (0) 17/2 = 8 (1) 8/2 = 4 (0) 4/2 = 2(0) 2/2 = 1 (0) 1/2 = 0(1)
Собираем 01000100001 = 1000100001
Перевод на бумаге обычно осуществляется делением в столбик. Пока деление не приведёт к нулю, каждый следующий ответ делится на основание с. с. В конце, из остатков от деления собирается ответ.
Также часто можно перевести число в другую с. с. , если в уме представить его как сумму степеней соответствующего основания, в которое мы хотим перевести число.
Например, 129 очевидно 128 + 1 = 27 + 1 = 100000012
80 = 81 – 1 = 34 – 1 = 10000 – 1 = 22223
Перевод в десятичную систему счисления целой части
Перевод осуществляется, используя представление числа в позиционной системе счисления. Пусть необходимо перевести A312 → X10
Известно, что A3 – это 3∙q0 + A∙q1, то есть 3*1 + A*12 = 3 + 120 = 123
107238 → X10
1∙q4 + 0∙q3 + 7∙q2 + 2∙q1 + 3∙q0 = 1∙84 + 0 + 7∙82 + 2∙8 + 3 = 1∙4096 + 7∙64 + 2∙8 + 3 = 4563
D1516 → X10
D∙162 + 1∙161+5∙160 = 13∙256 + 16 + 5 = 3349
10001000012 → X10
29 + 25 + 1 = 512 + 32 + 1 = 545.
Перевод на бумаге обычно осуществляется следующим образом. Над каждой цифрой по порядку пишут номер степени. Затем уже выписывают все слагаемые.
Перевод дробной части из десятичной системы
Во время перевода дробной части часто случается ситуация, когда конечная десятичная дробь превращается в бесконечную. Поэтому обычно при переводе указывается точность, с которой необходимо переводить.
Перевод осуществляется путём последовательного умножения дробной части на основание системы счисления. Целая часть при этом откидывается и входит в состав дроби.
0.62510 → X2
0.625 * 2 = 1.250 (1) 0.25 * 2 = 0.5 (0) 0.5 * 2 = 1.0 (1)
0 – дальнейшее умножение будет давать только нули
Собираем сверху вниз, получаем 0.101
0.310 → X2 0.3 * 2 = 0.6 (0) 0.6 * 2 = 1.2 (1) 0.2 * 2 = 0.4 (0) 0.4 * 2 = 0.8 (0) 0.8 * 2 = 1.6 (1) 0.6 * 2 = 1.2 (1)
0.2 … получим периодическую дробь
Собираем, получаем 0.0100110011001… = 0.0(1001)
0.64510 → X5 0.645 * 5 = 3.225 (3) 0.255 * 5 = 1.275 (1) 0.275 * 5 = 1.375 (1) 0.375 * 5 = 1.875 (1) 0.875 * 5 = 4.375 (4) 0.375 * 5 = 1.875 (1) …
0.3111414… = 0.311(14)
Перевод дробной части в десятичную систему
Осуществляется аналогично переводу целой части, путём домножения цифры разряда на основание в степени, равной положению разряда в числе.
0.1012 → X10
1∙2-1 + 0∙2-2 + 1∙2-3 = 0.5 + 0.125 = 0.625
0.1345 → X10
1∙5-1 + 3∙5-2 +4∙5-3 = 0.2 + 3∙0.04 + 4∙0.008 = 0.2 + 0.12 + 0.032 = 0.352
Перевод из произвольной системы счисления в произвольную
Перевод из произвольной системы счисления в произвольную с. с. осуществляется с помощью десятичной с. с.
XN → XM ≡ XN → X10 → XM
Например
12212013 → X7
12212013 = 1∙36 + 2∙35 + 2∙34 + 1∙33 + 2∙32 + 1 = 729 + 2∙243 + 2∙81 + 27 + 9 + 1 = 141410
1414/7 = 202 (0) 202/7 = 28 (6) 28/7 = 4 (0) 4/7 = 0 (4)
40607
12212013 → 40607
Родственные системы счисления
Системы счисления называют родственными, когда их основания являются степенями одного числа. Например, 2, 4, 8, 16. Перевод между родственными системами счисления можно осуществлять, воспользовавшись таблицей
10 | 2 | 4 | 8 | 16 |
---|---|---|---|---|
0 | 0000 | 000 | 00 | 0 |
1 | 0001 | 001 | 01 | 1 |
2 | 0010 | 002 | 02 | 2 |
3 | 0011 | 003 | 03 | 3 |
4 | 0100 | 010 | 04 | 4 |
5 | 0101 | 011 | 05 | 5 |
6 | 0110 | 012 | 06 | 6 |
7 | 0111 | 013 | 07 | 7 |
8 | 1000 | 020 | 10 | 8 |
9 | 1001 | 021 | 11 | 9 |
10 | 1010 | 022 | 12 | A |
11 | 1011 | 023 | 13 | B |
12 | 1100 | 030 | 14 | C |
13 | 1101 | 031 | 15 | D |
14 | 1110 | 032 | 16 | E |
15 | 1111 | 033 | 17 | F |
Для перевода из одной родственной системы счисления в другую, сначала нужно перевести число в двоичную систему. Для перевода в двоичную систему счисления каждая
цифра числа подменяется на соответствующую двойку (для четверичной), тройку (для восьмеричной) или четвёрку (для шестнадцатеричной).
Для 1234 единица подменяется на 01, двойка на 10, тройка нa 11, получаем 110112
Для 57218 соответственно 101, 111, 010, 001, итого 1011110100012
Для E1216 получим 1110000100102
Для перевода из двоичной системы следует разбить число на двойки (4-я), тройки (8-я) или четвёрки чисел (16-я), а затем подменить на соответствующие значения.
1101001012 = 01.10.10.01.01 = 122114
1101001012 = 110.100.101 = 6458
1101001012 = 0001.1010.0101 = 1A516
Переход из одной родственной системы в другую осуществляется транзитом через наименьшее основание, в нашем случае через двойку.
332324 → X16
332324 → 11111011102 → 0011.1110.1110 → 3EE16
Понятно, что все эти рассуждения применимы и для систем счисления 3, 9, 21, 81 и 5, 25, 125 и т.п.
Q&A
Всё ещё не понятно? – пиши вопросы на ящик
Тема 14.
Системы счисления
14
.
02
Нахождение основания системы счисления
Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами – ЛЕГКО!
Подтемы раздела
системы счисления
Решаем задачи
Напишите программу, которая решает уравнение . В ответе напишите найденное значение переменной
.
Показать ответ и решение
for i in range(7, 10): # начинаем перебор с 7, так как в записи числа 256 максимальное число - 6, # а оно может присутствовать в любой системе счисления, которая больше 6 if 2 * i ** 2 + 5 * i + 6 == 139: print(i)
Показать ответ и решение
def x_10_to_n(x, n):
digits = []
while x > 0:
digits.append(x % n)
x //= n
digits.reverse()
return digits
for n in range(3, 10):
if x_10_to_n(100, n)[-1] == 2 and
x_10_to_n(78, n)[-1] == 1:
print(n)
Показать ответ и решение
for i in range(6, 100): if 2 * i ** 2 + 5 * i + 0 == 102: print(i) break
Решите уравнение: .
Ответ запишите в десятичной системе счисления.
Показать ответ и решение
for i in range(100): if 1 * 7 * 7 + 4 * 7 + 5 + i == 3 * 5 * 5 + 3 * 5 + 1: print(i)
В системе счисления с некоторым основанием десятичное число 14 записывается в виде 20. Укажите это
основание.
Показать ответ и решение
Решение аналитически:
Пусть x – это основание искомой системы счисления, тогда из условия, что следует .
Решение программой:
for x in range(2, 10): s = ’’ n = 14 while n != 0: s = str(n % x) + s n //= x if s == ’20’: print(x)
Укажите через пробел в порядке возрастания все основания систем счисления, в которых запись числа 13 оканчивается на
1.
Показать ответ и решение
Чтобы последняя цифра числа в n-ричной системе счисления числа 13 равнялась 1, нужно, чтобы остаток деления 13 на n
также равнялся 1. Переберём системы счисления от двоичной до 13-ричной.
for i in range(2, 13):
if 13 % i == 1:
print(i)
Показать ответ и решение
for i in range(3, 100): if 100 % i == 2 and 78 % i == 1: print(i)
Найдите основание системы счисления, в которой выполнено сложение: .
Показать ответ и решение
for i in range(7, 36): if int(’251’, i) + int(’63’, i) == int(’334’, i): print(i)
Показать ответ и решение
def x_10_to_n(x, n):
digits = []
while x > 0:
digits.append(x % n)
x //= n
digits.reverse()
return digits
for x in range(6, 10):
if x_10_to_n(102, x) == [2, 5, 0]:
print(x)
Решите уравнение: .
Ответ запишите в десятичной системе счисления.
Показать ответ и решение
def n_to_x_10(arr, n):
x = 0
for i in range(len(arr)):
x += arr[i] * n ** (len(arr) – 1 – i)
return x
a = [1, 4, 5]
b = [3, 3, 1]
print(n_to_x_10(b, 5) – n_to_x_10(a, 7))
В системе счисления с некоторым основанием десятичное число записывается в виде . Укажите это
основание.
Показать ответ и решение
Пусть x – это основание искомой системы счисления, тогда из условия, что следует .
Показать ответ и решение
Решение 1
for i in range(2, 20): x = 25 x_new = ’’ while x > 0: x_new = str(x % i) + x_new x //= i if len(x_new) == 2 and x_new[-1] == ’4’: print(i) break
Решение 2
for i in range(2, 100): if i ** 2 > 25 >= i and 25 % i == 4: print(i) break
Определите число , для которого выполняется равенство .
Показать ответ и решение
Переведём оба числа в десятичную систему и решим уравнение:
В ответ берем положительное число.
Значение арифметического выражения:
записали в системе счисления с основанием . Определите основание системы счисления, если известно, что сумма
разрядов в числе, представленном в этой системе счисления, равна .
Показать ответ и решение
for n in range(2, 10): # Перебор начинаем с 2 т.к. # при делении на 1 получается бесконечный цикл s = n**25 - 2*n**13 + 10 summ = 0 while s > 0: summ += s % n s //= n if summ == 75: print(n)
В какой системе счисления число записывается как ? В ответ запишите основание системы счисления.
В системе счисления с некоторым основанием десятичное число 14 записывается в виде 20. Укажите это
основание.
Показать ответ и решение
Требуется решить уравнение: откуда x = 7.
В системе счисления с некоторым основанием десятичное число 16 записывается в виде 10000. Укажите это
основание.
Показать ответ и решение
Требуется решить уравнение:
откуда x = 2.
В какой системе счисления число будет выглядеть как ?
Показать ответ и решение
Стоить заметить, что любое десятичное число A в n-ой степени можно записать как единицу и n нулей в
системе счисления с основанием A:
Тогда , значит в системе счисления с основанием 18 будет выглядеть как .
В какой системе счисления число будет выглядеть как ?
Показать ответ и решение
Стоить заметить, что любое десятичное число A в n-ой степени можно записать как единицу и n нулей в
системе счисления с основанием A:
Тогда , значит в системе счисления с основанием 16 будет выглядеть как .