Уже описано, как получать двоичный код любого десятичного числа, т.е. переводить его из десятичной системы в двоичную. Рассмотрим теперь обратное действие: перевод числа из двоичной системы счисления в десятичную.
Итак, требуется найти десятичное число по известному двоичному коду этого числа. Воспользуемся представлением вида (2). Коэффициенты аn, an-l ,···,a1, a0 известны. Значит, нужно вычислить значение выражения (2). Рассмотрим примеры. Пусть задан двоичный код 11012. Самый левый — старший бит — имеет номер 3. Следовательно, первое слагаемое равно 1·23. Следующий бит имеет
номер 2. Второе слагаемое равно 1·22. Третье слагаемое равно 0·21 четвертое слагаемое равно 1·20. Искомое число есть сумма четырех слагаемых: 1·23+1·22+0·21+1·20=8+4+1=13. Таким образом, 11012=13.
Пусть задан двоичный код 11010112. Число, имеющее такой двоичный код, равно сумме 1·26+1·25+0·24+1·23+0·22+1·21+1·20=64+32+8+2+1=107.
Следовательно, 11010112=107.
В десятичной системе следующее число получается из предыдущего путем прибавления единицы к количеству единиц предыдущего числа.
То же самое происходит при получении двоичного кода следующего числа из двоичного кода предыдущего: к младшему разряду двоичного кода предыдущего числа прибавляется единица.
Правило выполнения операции сложения одинаково для всех систем счисления: если сумма складываемых цифр больше или равна основанию системы счисления, происходит перенос единицы в следующий слева разряд. Таким образом, правила сложения в двоичной системе таковы:
12+02=12
02+12=12
12+12=102 (1+1=210=102)
Пользуясь этими правилами, получаем
+
112
12
1002=410
+
102
12
112=310
+
1002
12
1012=510
+
1012
12
1102=610
+
1102
12
1112=710
+
1112
12
10002=810
Возникает во какое наибольшее десятичное число можно записать в двоичном виде, используя для этой записи заданное число битов?
Наибольшее десятичное число, использующее для записи своего двоичного кода три бита, получается, когда значения всех трех битов равны единице:
1
1
1
=1·22+1·21+1·20=22+21+20=4+2+1=7.
(
8=
1
0
0
0
Точно так же, как в десятичной системе, наибольшее число, состоящее из трех цифр, — 999, получаем, когда каждая из цифр принимает свое максимальное значение, равное 9). Заметим, что 7=8-1=23-1. Чтобы представить следующее за 7 число 8 (=23), потребуется уже четыре бита: . Значит, используя три бита, можно записывать восемь десятичных чисел от 0 до 7.
А если для записи десятичного числа в двоичном виде используется четыре бита? Наибольшее число, двоичный код которого состоит из четырех битов, равно 15: в его двоичном коде все четыре бита, равны единице: 15 = 11112. Снова заметим, что 15=16-1=24-1; для записи следующего за 15 числа 16 нужно уже пять битов. Так что используя четыре бита, можно записывать числа от 0 до 15 (всего 16 = 24 чисел). Уже понятно, что наибольшее число, использующее для своей двоичной записи а битов, равно 2n -1. Следующее за ним число 2n требует для своей записи n+1 бит. Таким образом, используя п битов, можно записывать двоичные коды чисел от 0 до 2n -1, всего 2n чисел.
Напишите программу (python), которая соберет все подарки Иа от всех друзей.
Формат ввода
Целое число — количество строк, затем сами строки, в которых сначала вводится подарок, а потом через дефис, окруженный пробелами, имя друга.
Формат вывода
Вывести для каждого друга (друзья выводятся в обратном алфавитном порядке) список его подарков Иа, но уже в алфавитном порядке. Формат вывода:
Друг: подарок, подарок, подарок
Ввод
5
Букет из чертополоха - Кролик
Бант для хвоста - Кристофер Робин
Гвоздик для хвоста - Кристофер Робин
Спаржевый пудинг - Кролик
Зеленая тряпочка - Пятачок
Вывод
Пятачок: Зеленая тряпочка
Кролик: Букет из чертополоха, Спаржевый пудинг
Кристофер Робин: Бант для хвоста, Гвоздик для хвоста
Сколько чисел можно записать с битов
Уже описано, как получать двоичный код любого десятичного числа, т.е. переводить его из десятичной системы в двоичную. Рассмотрим теперь обратное действие: перевод числа из двоичной системы счисления в десятичную.
Итак, требуется найти десятичное число по известному двоичному коду этого числа. Воспользуемся представлением вида (2). Коэффициенты аn, an-l ,···,a1, a0 известны. Значит, нужно вычислить значение выражения (2). Рассмотрим примеры. Пусть задан двоичный код 11012. Самый левый — старший бит — имеет номер 3. Следовательно, первое слагаемое равно 1·23. Следующий бит имеет
номер 2. Второе слагаемое равно 1·22. Третье слагаемое равно 0·21 четвертое слагаемое равно 1·20. Искомое число есть сумма четырех слагаемых: 1·23+1·22+0·21+1·20=8+4+1=13. Таким образом, 11012=13.
Пусть задан двоичный код 11010112. Число, имеющее такой двоичный код, равно сумме 1·26+1·25+0·24+1·23+0·22+1·21+1·20=64+32+8+2+1=107.
Следовательно, 11010112=107.
В десятичной системе следующее число получается из предыдущего путем прибавления единицы к количеству единиц предыдущего числа.
То же самое происходит при получении двоичного кода следующего числа из двоичного кода предыдущего: к младшему разряду двоичного кода предыдущего числа прибавляется единица.
Правило выполнения операции сложения одинаково для всех систем счисления: если сумма складываемых цифр больше или равна основанию системы счисления, происходит перенос единицы в следующий слева разряд. Таким образом, правила сложения в двоичной системе таковы:
12+02=12
02+12=12
12+12=102 (1+1=210=102)
Пользуясь этими правилами, получаем
+
112
12
1002=410
+
102
12
112=310
+
1002
12
1012=510
+
1012
12
1102=610
+
1102
12
1112=710
+
1112
12
10002=810
Возникает во какое наибольшее десятичное число можно записать в двоичном виде, используя для этой записи заданное число битов?
Наибольшее десятичное число, использующее для записи своего двоичного кода три бита, получается, когда значения всех трех битов равны единице:
1
1
1
=1·22+1·21+1·20=22+21+20=4+2+1=7.
(
8=
1
0
0
0
Точно так же, как в десятичной системе, наибольшее число, состоящее из трех цифр, — 999, получаем, когда каждая из цифр принимает свое максимальное значение, равное 9). Заметим, что 7=8-1=23-1. Чтобы представить следующее за 7 число 8 (=23), потребуется уже четыре бита: . Значит, используя три бита, можно записывать восемь десятичных чисел от 0 до 7.
А если для записи десятичного числа в двоичном виде используется четыре бита? Наибольшее число, двоичный код которого состоит из четырех битов, равно 15: в его двоичном коде все четыре бита, равны единице: 15 = 11112. Снова заметим, что 15=16-1=24-1; для записи следующего за 15 числа 16 нужно уже пять битов. Так что используя четыре бита, можно записывать числа от 0 до 15 (всего 16 = 24 чисел). Уже понятно, что наибольшее число, использующее для своей двоичной записи а битов, равно 2n -1. Следующее за ним число 2n требует для своей записи n+1 бит. Таким образом, используя п битов, можно записывать двоичные коды чисел от 0 до 2n -1, всего 2n чисел.
Объяснение: