СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

14.1.Еще пример задания

Категория: Информатика

Нажмите, чтобы узнать подробности

Для подготовки к ОГЭ И ЕГЭ  по информатике

Просмотр содержимого документа
«14.1.Еще пример задания»

Еще пример задания:

У исполнителя, который работает с положительными однобайтовыми двоичными числами, две команды, которым присвоены номера:

1. сдвинь влево

2. вычти 1

Выполняя первую из них, исполнитель сдвигает число на один двоичный разряд влево, а выполняя вторую, вычитает из него 1. Исполнитель начал вычисления с числа 104 и выполнил цепочку команд 11221. Запишите результат в десятичной системе.

Решение:

  1. важно, что числа однобайтовые – на число отводится 1 байт или 8 бит

  2. главная проблема в этой задаче – разобраться, что такое «сдвиг влево»; так называется операция, при которой все биты числа в ячейке (регистре) сдвигаются на 1 бит влево, в младший бит записывается нуль, а старший бит попадает в специальную ячейку – бит переноса:



7

6

5

4

3

2

1

0


?


0

0

1

0

1

1

0

1

= 45











0

0


0

1

0

1

1

0

1

0

= 90

бит
переноса

м ожно доказать, что в большинстве случаев результат этой операции – умножение числа на 2, однако есть исключение: если в старшем (7-ом) бите исходного числа x была 1, она будет «выдавлена» в бит переноса, то есть потеряна1, поэтому мы получим остаток от деления числа 2x на 28=256

  1. попутно заметим, что при сдвиге вправо2 в старший бит записывается 0, а младший «уходит» в бит переноса; это равносильно делению на 2 и отбрасыванию остатка

  2. таким образом, фактически команда сдвинь влево означает умножь на 2

  3. поэтому последовательность команд 11221 выполняется следующим образом

    Код команды

    Действие

    Результат

    Примечание



    104


    1

    умножь на 2

    208


    1

    умножь на 2

    160

    остаток от деления 208*2 на 256

    2

    вычти 1

    159


    2

    вычти 1

    158


    1

    умножь на 2

    60

    остаток от деления 158*2 на 256

  4. правильный ответ – 60.



1 Используя ассемблер (язык машинных кодов с символьными командами), можно добраться до бита переноса и использовать его.

2 Кроме логического сдвига вправо, о котором идет речь, есть еще арифметический, при котором старший бит не меняется.


Скачать

Рекомендуем курсы ПК и ППК для учителей

Вебинар для учителей

Свидетельство об участии БЕСПЛАТНО!