Возможные ловушки и проблемы:
нужно не забыть в конце добавить единицу, причем это может быть не так тривиально, если будут переносы в следующий разряд – тут тоже есть шанс ошибиться из-за невнимательности
Просмотр содержимого документа
«1.3.Еще пример задания»
Еще пример задания:
Для хранения целого числа со знаком используется один байт. Сколько единиц содержит внутреннее представление числа (-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 .
| Возможные ловушки и проблемы: нужно помнить, что при инверсии младшая единица и все нули после нее не меняются |