А3 (базовый уровень, время – 1 мин)

А3 (базовый уровень, время – 1 мин)

Тема: Системы счисления и двоичное представление информации в памяти компьютера.

Что нужно знать:

  • перевод чисел между десятичной, двоичной, восьмеричной и шестнадцатеричной системами счисления (см. презентацию «Системы счисления»)

Полезно помнить, что в двоичной системе:

  • четные числа оканчиваются на 0, нечетные – на 1;
  • числа, которые делятся на 4, оканчиваются на 00, и т.д.; числа, которые делятся на 2 k , оканчиваются на k нулей
  • если число N принадлежит интервалу 2 k-1 ? N < 2 k , в его двоичной записи будет всего k цифр, например, для числа 125:

2 6 = 64 ? 125 < 128 = 2 7 , 125 = 11111012 (7 цифр)

  • числа вида 2 k записываются в двоичной системе как единица и k нулей, например:

16 = 2 4 = 100002

  • числа вида 2 k -1 записываются в двоичной системе k единиц, например:

15 = 2 4 -1 = 11112

  • если известна двоичная запись числа N, то двоичную запись числа 2·N можно легко получить, приписав в конец ноль, например: 15 = 11112, 30 = 111102, 60 = 1111002, 120 = 11110002
    • отрицательные целые числа хранятся в памяти в двоичном дополнительном коде (подробнее см. презентацию «Компьютер изнутри»)
    • для перевода отрицательного числа (-a) в двоичный дополнительный код нужно сделать следующие операции:
      • перевести число a-1 в двоичную систему счисления
      • сделать инверсию битов: заменить все нули на единицы и единицы на нули в пределах разрядной сетки (см. пример далее)
      Пример задания:

      Дано: и . Какое из чисел с, записанных в двоичной системе счисления, удовлетворяет неравенству a < c < b?

      Общий подход:

      перевести все числа (и исходные данные, и ответы) в одну (любую!) систему счисления и сравнить.

      Решение (вариант 1, через десятичную систему):

      3) переводим в десятичную систему все ответы:

      110110012 = 217, 11011100 2= 220, 110101112 = 215, 110110002=216

      4) очевидно, что между числами 215 и 217 может быть только 216

      5) таким образом, верный ответ – 4 .

      Возможные проблемы:

      арифметические ошибки при переводе из других систем в десятичную.

      Решение (вариант 2, через двоичную систему):

      1) (каждая цифра шестнадцатеричной системы отдельно переводится в четыре двоичных – тетраду);

      2) (каждая цифра восьмеричной системы отдельно переводится в три двоичных – триаду, старшие нули можно не писать);

      3) теперь нужно сообразить, что между этими числами находится только двоичное число 110110002 – это ответ 4.

      Возможные проблемы:

      запись двоичных чисел однородна, содержит много одинаковых символов – нулей и единиц, поэтому легко запутаться и сделать ошибку.

      Решение (вариант 3, через восьмеричную систему):

      1) (сначала перевели в двоичную систему, потом двоичную запись числа разбили на триады справа налево, каждую триаду перевели отдельно в десятичную систему, так как для чисел от 0 до 7 их восьмеричная запись совпадает с десятичной);

      2) , никуда переводить не нужно;

      3) переводим в восьмеричную систему все ответы:

      110110012 = 011 011 0012 = 3318 (разбили на триады справа налево, каждую триаду перевели отдельно в десятичную систему, как в п. 1)

      4) в восьмеричной системе между числами 3278 и 3318 может быть только 3308

      5) таким образом, верный ответ – 4 .

      Возможные проблемы:

      нужно помнить двоичную запись чисел от 0 до 7 (или переводить эти числа в двоичную систему при решении).

      Решение (вариант 4, через шестнадцатеричную систему):

      1) никуда переводить не нужно;

      2) (сначала перевели в двоичную систему, потом двоичную запись числа разбили на тетрады справа налево, каждую тетраду перевели в шестнадцатеричную систему; при этом тетрады можно переводить из двоичной системы в десятичную, а затем заменить все числа, большие 9, на буквы – A, B, C, D, E, F);

      3) переводим в шестнадцатеричную систему все ответы:

      110110012 = 1101 10012 = D916 (разбили на тетрады справа налево, каждую тетраду перевели отдельно в десятичную систему, все числа, большие 9, заменили на буквы – A, B, C, D, E, F, как в п. 1)

      4) в шестнадцатеричной системе между числами D716 и D916 может быть только D816

      5) таким образом, верный ответ – 4 .

      Возможные проблемы:

      нужно помнить двоичную запись чисел от 0 до 15 (или переводить эти числа в двоичную систему при решении).

      Выводы:

      • есть несколько способов решения, «каждый выбирает для себя»;
      • наиболее сложные вычисления – при переводе всех чисел в десятичную систему, можно легко ошибиться;
      • сравнивать числа в двоичной системе сложно, также легко ошибиться;
      • видимо, в этой задаче наиболее простой вариант – использовать восьмеричную систему, нужно просто запомнить двоичные записи чисел от 0 до 7 и аккуратно все сделать;
      • в других задачах может быть так, что выгоднее переводить все в десятичную или шестнадцатеричную систему счисления.
      Еще пример задания:

      Для хранения целого числа со знаком используется один байт. Сколько единиц содержит внутреннее представление числа (-78)?

      1) 3 2) 4 3) 5 4) 6

      Решение (вариант 1, классический):

      1) переводим число 78 в двоичную систему счисления:

      78 = 64 + 8 + 4 + 2 = 2 6 + 2 3 + 2 2 + 2 1 = 10011102

      2) по условию число занимает в памяти 1 байт = 8 бит, поэтому нужно представить число с помощью 8 разрядов

      3) чтобы получилось всего 8 разрядов (бит), добавляем впереди один ноль:

      4) делаем инверсию битов (заменяем везде 0 на 1 и 1 на 0):

      5) добавляем к результату единицу

      это и есть число (-78) в двоичном дополнительно коде

      6) в записи этого числа 4 единицы

      7) таким образом, верный ответ – 2 .

      Возможные ловушки и проблемы:

      • нужно не забыть в конце добавить единицу, причем это может быть не так тривиально, если будут переносы в следующий разряд – тут тоже есть шанс ошибиться из-за невнимательности

      Решение (вариант 1, неклассический):

      1) переводим число 78 – 1=77 в двоичную систему счисления:

      77 = 64 + 8 + 4 + 2 = 2 6 + 2 3 + 2 2 + 2 0 = 10011012

      2) по условию число занимает в памяти 1 байт = 8 бит, поэтому нужно представить число с помощью 8 разрядов