© К. Поляков, 2009-2011
А1 (базовый уровень, время
– 1 мин)
Тема: Системы счисления
и двоичное представление информации
в памяти компьютера.
Что нужно знать:
- перевод чисел между десятичной, двоичной, восьмеричной и шестнадцатеричной системами счисления (см. презентацию «Системы счисления»)
Полезно помнить, что в двоичной системе:
- четные числа оканчиваются на 0, нечетные – на 1;
- числа, которые делятся на 4, оканчиваются на 00, и т.д.; числа, которые делятся на 2k, оканчиваются на k нулей
- если число N принадлежит интервалу 2k-1
£ N < 2k, в его двоичной записи
будет всего k цифр, например, для числа 125:
26 = 64 £ 125 < 128 = 27, 125 = 11111012
(7 цифр)
- числа вида 2k записываются в двоичной
системе как единица и k нулей, например:
16 = 24 = 100002
- числа вида 2k-1
записываются в двоичной системе k единиц, например:
15 = 24-1 = 11112
- если известна двоичная запись числа N, то двоичную запись числа 2·N можно легко получить, приписав в конец ноль, например:
15 = 11112, 30 = 111102,
60 = 1111002, 120 = 11110002
|
- отрицательные целые числа хранятся в памяти
в двоичном дополнительном коде (подробнее
см. презентацию «Компьютер изнутри»)
- для перевода отрицательного числа (-a) в двоичный дополнительный
код нужно сделать следующие операции:
- перевести число a-1 в двоичную систему счисления
- сделать инверсию битов: заменить все нули на единицы и единицы на нули в пределах разрядной
сетки (см. пример далее)
Пример задания:
Сколько единиц в двоичной
записи числа 1025?
1) 1
2) 2 3) 10 4) 11
Решение (вариант 1, прямой перевод):
- переводим число 1025 в двоичную систему: 1025 = 100000000012
- считаем единицы, их две
- Ответ: 2
Возможные проблемы:
легко запутаться при переводе больших
чисел. |
Решение (вариант 2, разложение
на сумму степеней двойки):
- тут очень полезно знать наизусть таблицу степеней двойки,
где 1024 = 210 и 1 = 20
- таким образом, 1025= 1024 + 1 = 210 + 20
- вспоминая, как переводится число из двоичной системы в десятичную (значение каждой цифры умножается на 2 в степени, равной её разряду), понимаем, что в двоичной записи числа ровно столько
единиц, сколько в приведенной сумме различных
степеней двойки, то есть, 2
- Ответ: 2
Возможные проблемы:
нужно помнить таблицу степеней
двойки. |
Когда удобно использовать:
- когда число чуть больше какой-то степени двойки
|
Ещё пример задания:
Дано:
и
. Какое из чисел с, записанных в двоичной системе счисления,
удовлетворяет неравенству a < c < b?
1) 110110012
2) 110111002
3) 110101112
4) 110110002
Общий подход:
перевести все числа (и исходные
данные, и ответы) в одну (любую!) систему
счисления и сравнить.
Решение (вариант 1, через десятичную систему):
-
-
- переводим в десятичную систему все ответы:
110110012 = 217, 11011100 2= 220, 110101112
= 215, 110110002=216
- очевидно, что между числами 215 и 217 может быть только 216
- таким образом, верный ответ – 4 .
Возможные проблемы:
арифметические ошибки при переводе
из других систем в десятичную. |
Решение (вариант 2, через двоичную систему):
-
(каждая цифра шестнадцатеричной
системы отдельно переводится в четыре двоичных – тетраду);
-
(каждая цифра восьмеричной системы отдельно переводится в три двоичных – триаду, старшие нули можно не писать);
- теперь нужно сообразить, что между этими числами находится только двоичное число 110110002
– это ответ 4.
Возможные проблемы:
запись двоичных чисел однородна,
содержит много одинаковых символов
– нулей и единиц, поэтому легко
запутаться и сделать ошибку. |
Решение (вариант 3, через
восьмеричную систему):
-
(сначала перевели в двоичную систему,
потом двоичную запись числа разбили на
триады справа налево, каждую триаду перевели отдельно в десятичную систему, так как для
чисел от 0 до 7 их восьмеричная запись
совпадает с десятичной);
-
, никуда переводить не нужно;
- переводим в восьмеричную систему все ответы:
110110012 = 011 011 0012
= 3318 (разбили на триады справа налево, каждую триаду перевели отдельно в десятичную систему, как
в п. 1)
11011100 2= 3348, 110101112
= 3278, 110110002=3308
- в восьмеричной системе между числами 3278 и 3318 может быть только
3308
- таким образом, верный ответ – 4 .
Возможные проблемы:
нужно помнить двоичную запись
чисел от 0 до 7 (или переводить эти числа
в двоичную систему при решении). |
Решение (вариант 4, через
шестнадцатеричную систему):
-
никуда переводить не нужно;
-
(сначала перевели в двоичную систему,
потом двоичную запись числа разбили на
тетрады справа налево, каждую тетраду перевели в шестнадцатеричную
систему; при этом тетрады можно переводить
из двоичной системы в десятичную, а затем заменить все числа, большие
9, на буквы – A, B, C, D, E, F);
- переводим в шестнадцатеричную систему все ответы:
110110012 = 1101 10012 = D916
(разбили на тетрады справа налево, каждую тетраду перевели отдельно в десятичную систему, все
числа, большие 9, заменили на буквы
– A, B, C, D, E, F, как в п. 1)
11011100 2= DC16, 110101112
= D716, 110110002=D816
- в шестнадцатеричной системе между числами D716 и D916 может быть только
D816
- таким образом, верный ответ – 4 .
Возможные проблемы:
нужно помнить двоичную запись чисел
от 0 до 15 (или переводить эти числа
в двоичную систему при решении). |
Выводы:
- есть несколько способов решения, «каждый выбирает для себя»;
- наиболее сложные вычисления – при переводе всех чисел в десятичную систему, можно легко ошибиться;
- сравнивать числа в двоичной системе сложно, также легко ошибиться;
- видимо, в этой задаче наиболее простой вариант – использовать
восьмеричную систему, нужно просто запомнить
двоичные записи чисел от 0 до 7 и аккуратно
все сделать;
- в других задачах может быть так, что выгоднее переводить все в десятичную или шестнадцатеричную систему счисления.
Еще пример задания:
Для хранения целого числа
со знаком используется один байт. Сколько
единиц содержит внутреннее представление
числа (-78)?
1) 3
2) 4 3)
5 4) 6
Решение (вариант 1, классический):
- переводим число 78 в двоичную систему счисления:
78 = 64 + 8 + 4 + 2 = 26 + 23 + 22
+ 21 = 10011102
- по условию число занимает в памяти 1 байт = 8 бит, поэтому нужно представить число с помощью 8 разрядов
- чтобы получилось всего 8 разрядов (бит), добавляем впереди один ноль:
78 = 010011102
- делаем инверсию битов (заменяем везде 0 на 1 и 1 на 0):
010011102 →
101100012
- добавляем к результату единицу
101100012 + 1 = 101100102
это и есть число (-78) в двоичном дополнительно
коде
- в записи этого числа 4 единицы
- таким образом, верный ответ – 2 .
Возможные ловушки и проблемы:
- нужно не забыть в конце добавить единицу,
причем это может быть не так тривиально,
если будут переносы в следующий разряд
– тут тоже есть шанс ошибиться из-за невнимательности
|
Решение (вариант 2, неклассический):
- переводим число 78 – 1=77 в двоичную систему счисления:
77 = 64 + 8 + 4 + 1 = 26 + 23 + 22
+ 20 = 10011012
- по условию число занимает в памяти 1 байт = 8 бит, поэтому нужно представить число с помощью 8 разрядов
- чтобы получилось всего 8 разрядов (бит), добавляем впереди один ноль:
77 = 010011012
- делаем инверсию битов (заменяем везде 0 на 1 и 1 на 0):
010011012 →
101100102
это и есть число (-78) в двоичном дополнительно
коде
- в записи этого числа 4 единицы
- таким образом, верный ответ – 2 .
Возможные ловушки и проблемы:
- нужно помнить, что в этом способе в двоичную систему
переводится не число a, а число
a-1; именно этот прием позволяет
избежать добавления единицы в конце (легче
вычесть в десятичной системе, чем добавить
в двоичной)
|
Решение (вариант 3, неклассический):
- переводим число 78 в двоичную систему счисления:
78 = 64 + 8 + 4 + 2 = 26 + 23 + 22
+ 21 = 10011102
- по условию число занимает в памяти 1 байт = 8 бит, поэтому нужно представить число с помощью 8 разрядов
- чтобы получилось всего 8 разрядов (бит), добавляем
впереди один ноль:
78 = 010011102
- для всех битов, которые стоят слева от младшей единицы, делаем инверсию битов (заменяем
везде 0 на 1 и 1 на 0):
010011102 →
101100102
это и есть число (-78) в двоичном дополнительно
коде
- в записи этого числа 4 единицы
- таким образом, верный ответ – 2 .
Возможные ловушки и проблемы:
- нужно помнить, что при инверсии младшая единица и все нули после нее не меняются
|
Задачи для тренировки1:
- Как представлено число 8310 в двоичной системе счисления?
1) 10010112 2) 11001012 3) 10100112
4) 1010012
- Сколько единиц в двоичной записи числа 195?
1) 5 2) 2 3) 3 4) 4
- Сколько единиц в двоичной записи числа 173?
1) 7 2) 5 3) 6 4) 4
- Как представлено число 25 в двоичной системе счисления?
1) 10012 2) 110012 3) 100112
4) 110102
- Как представлено число 82 в двоичной системе счисления?
1) 10100102 2) 10100112 3) 1001012
4) 10001002
- Как представлено число 263 в восьмеричной системе счисления?
1) 3018 2) 6508 3) 4078
4) 7778
- Как записывается число 5678 в двоичной
системе счисления?
1) 10111012 2) 1001101112 3) 1011101112
4) 111101112
- Как записывается число A8716 в восьмеричной системе
счисления?
1) 4358 2) 15778 3) 52078
4) 64008
- Как записывается число 7548 в шестнадцатеричной системе
счисления?
1) 73816 2) 1A416 3) 1EC16
4) A5616
- Для хранения целого числа со знаком используется один байт. Сколько единиц содержит внутреннее представление числа (-128)?
1) 1
2) 2 3)
3 4) 4
- Для хранения целого числа со знаком используется один байт.
Сколько единиц содержит внутреннее представление
числа (-35)?
1) 3
2) 4 3)
5 4) 6
- Дано:
,
. Какое из чисел С, записанных в двоичной
системе счисления, удовлетворяет неравенству
?
1) 100110102
2) 100111102
3) 100111112 4) 110111102
- Дано:
,
. Какое из чисел С, записанных в двоичной
системе счисления, удовлетворяет неравенству
?