А1
А1 (базовый уровень, время – 1 мин) Тема: Системы счисления и двоичное представление информации в памяти компьютера. Что нужно знать: перевод чисел между десятичной, двоичной, восьмеричной и шестнадцатеричной системами счисления отрицательные целые числа хранятся в памяти в двоичном дополнительном коде для перевода отрицательного числа (-a) в двоичный дополнительный код нужно сделать следующие операции: перевести число a-1 в двоичную систему счисления сделать инверсию битов: заменить все нули на единицы и единицы на нули в пределах разрядной сетки
Полезно помнить, что в двоичной системе: четные числа оканчиваются на 0, нечетные – на 1; числа, которые делятся на 4, оканчиваются на 00, и т.д.; числа, которые делятся на 2 k, оканчиваются на k нулей если число N принадлежит интервалу 2 k-1 N < 2 k, в его двоичной записи будет всего k цифр, например, для числа 125: 2 6 = < 128 = 2 7, 125 = (7 цифр) числа вида 2 k записываются в двоичной системе как единица и k нулей, например: 16 = 2 4 = числа вида 2 k -1 записываются в двоичной системе k единиц, например: 15 = = если известна двоичная запись числа N, то двоичную запись числа 2·N можно легко получить, приписав в конец ноль, например: 15 = , 30 = , 60 = , 120 =
Пример задания: Сколько единиц в двоичной записи числа 1025? 1) 1 2) 2 3) 10 4) 11 Решение (вариант 1, прямой перевод): переводим число 1025 в двоичную систему: 1025 = 2 считаем единицы, их две Ответ: 2 Возможные проблемы: легко запутаться при переводе больших чисел.
Возможные проблемы: нужно помнить таблицу степеней двойки. Когда удобно использовать: когда число чуть больше какой-то степени двойки Решение (вариант 2, разложение на сумму степеней двойки): тут очень полезно знать наизусть таблицу степеней двойки, где 1024 = 2 10 и 1 = 2 0 таким образом, 1025= = вспоминая, как переводится число из двоичной системы в десятичную (значение каждой цифры умножается на 2 в степени, равной её разряду), понимаем, что в двоичной записи числа ровно столько единиц, сколько в приведенной сумме различных степеней двойки, то есть, 2 Ответ: 2
Дано:. Какое из чисел с, записанных в двоичной системе счисления, удовлетворяет неравенству a < c < b ? и 1) ) ) ) Общий подход: перевести все числа (и исходные данные, и ответы) в одну (любую!) систему счисления и сравнить. Решение (вариант 1, через десятичную систему): (каждая цифра шестнадцатеричной системы отдельно) переводим в десятичную систему все ответы: = 217, = 220, = 215, =216 очевидно, что между числами 215 и 217 может быть только 216 таким образом, верный ответ – 4. Возможные проблемы: арифметические ошибки при переводе из других систем в десятичную.
Возможные проблемы: запись двоичных чисел однородна, содержит много одинаковых символов – нулей и единиц, поэтому легко запутаться и сделать ошибку. Решение (вариант 2, через двоичную систему): (каждая цифра шестнадцатеричной системы отдельно переводится в четыре двоичных – тетраду); (каждая цифра восьмеричной системы отдельно переводится в три двоичных – триаду, старшие нули можно не писать); теперь нужно сообразить, что между этими числами находится только двоичное число – это ответ 4.
Возможные проблемы: нужно помнить двоичную запись чисел от 0 до 7 (или переводить эти числа в двоичную систему при решении). Решение (вариант 3, через восьмеричную систему): (сначала перевели в двоичную систему, потом двоичную запись числа разбили на триады справа налево, каждую триаду перевели отдельно в десятичную систему, так как для чисел от 0 до 7 их восьмеричная запись совпадает с десятичной); переводим в восьмеричную систему все ответы: = = (разбили на триады справа налево, каждую триаду перевели отдельно в десятичную систему) = 334 8, = 327 8, =330 8 в восьмеричной системе между числами и может быть только таким образом, верный ответ – 4.
Возможные проблемы: нужно помнить двоичную запись чисел от 0 до 15 (или переводить эти числа в двоичную систему при решении). Решение (вариант 4, через шестнадцатеричную систему): никуда переводить не нужно; (сначала перевели в двоичную систему, потом двоичную запись числа разбили на тетрады справа налево, каждую тетраду перевели в шестнадцатеричную систему; при этом тетрады можно переводить из двоичной системы в десятичную, а затем заменить все числа, большие 9, на буквы – A, B, C, D, E, F); переводим в шестнадцатеричную систему все ответы: = = D9 16 (разбили на тетрады справа налево, каждую тетраду перевели отдельно в десятичную систему, все числа, большие 9, заменили на буквы – A, B, C, D, E, F) = DC 16, = D7 16, =D8 16 в шестнадцатеричной системе между числами D7 16 и D9 16 может быть только D8 16 таким образом, верный ответ – 4.
Выводы: есть несколько способов решения, «каждый выбирает для себя»; наиболее сложные вычисления – при переводе всех чисел в десятичную систему, можно легко ошибиться; сравнивать числа в двоичной системе сложно, также легко ошибиться; видимо, в этой задаче наиболее простой вариант – использовать восьмеричную систему, нужно просто запомнить двоичные записи чисел от 0 до 7 и аккуратно все сделать; в других задачах может быть так, что выгоднее переводить все в десятичную или шестнадцатеричную систему счисления.
Возможные ловушки и проблемы: нужно не забыть в конце добавить единицу, причем это может быть не так тривиально, если будут переносы в следующий разряд – тут тоже есть шанс ошибиться из-за невнимательности Для хранения целого числа со знаком используется один байт. Сколько единиц содержит внутреннее представление числа (-78) ? 1) 3 2) 4 3) 5 4) 6 Решение (вариант 1, классический): переводим число 78 в двоичную систему счисления: 78 = = = по условию число занимает в памяти 1 байт = 8 бит, поэтому нужно представить число с помощью 8 разрядов чтобы получилось всего 8 разрядов (бит), добавляем впереди один ноль: 78 = делаем инверсию битов (заменяем везде 0 на 1 и 1 на 0): добавляем к результату единицу = это и есть число (-78) в двоичном дополнительно коде в записи этого числа 4 единицы таким образом, верный ответ – 2. Пример задания:
Возможные ловушки и проблемы: нужно помнить, что в этом способе в двоичную систему переводится не число a, а число a-1 ; именно этот прием позволяет избежать добавления единицы в конце (легче вычесть в десятичной системе, чем добавить в двоичной) Решение (вариант 2, неклассический): переводим число 78 – 1=77 в двоичную систему счисления: 77 = = = по условию число занимает в памяти 1 байт = 8 бит, поэтому нужно представить число с помощью 8 разрядов чтобы получилось всего 8 разрядов (бит), добавляем впереди один ноль: 77 = делаем инверсию битов (заменяем везде 0 на 1 и 1 на 0): это и есть число (-78) в двоичном дополнительно коде в записи этого числа 4 единицы таким образом, верный ответ – 2.
Возможные ловушки и проблемы: нужно помнить, что при инверсии младшая единица и все нули после нее не меняются Решение (вариант 3, неклассический): переводим число 78 в двоичную систему счисления: 78 = = = по условию число занимает в памяти 1 байт = 8 бит, поэтому нужно представить число с помощью 8 разрядов чтобы получилось всего 8 разрядов (бит), добавляем впереди один ноль: 78 = для всех битов, которые стоят слева от младшей единицы, делаем инверсию битов (заменяем везде 0 на 1 и 1 на 0): это и есть число (-78) в двоичном дополнительно коде в записи этого числа 4 единицы таким образом, верный ответ – 2.