ГДЗ по информатике, 10 класс, Поляков, номер 27.20: Хранение в памяти вещественных чисел
Информатика (в 2 частях); углубленное обучение — Поляков К.Ю., Еремин Е.А.
Мария Волкова, преподаватель информатики Шпаргача обновлено 12 сентября 2026
Условие
Объяснить, почему логический сдвиг не подходит для деления на два отрицательных чисел, и описать принцип работы арифметического сдвига.
Номер как в учебнике. Условие — полный пересказ редакции: те же пункты, числа и факты, не цитата из книги.
Пошаговое решение
В данном задании требуется разобраться в особенностях работы с целыми числами в двоичной системе счисления при выполнении операции деления на два. Мы рассмотрим, почему стандартный логический сдвиг дает неверные результаты для отрицательных чисел и как эта проблема решается с помощью арифметического сдвига.
Шаг 1. Анализ проблемы логического сдвига для отрицательных чисел
Логический сдвиг (logical shift) — это операция перемещения всех битов числа влево или вправо. При сдвиге вправо освободившиеся старшие разряды всегда заполняются нулями. Эта операция эквивалентна делению на 2 без остатка только для неотрицательных чисел.
Рассмотрим пример с использованием дополнительного кода (стандартное представление отрицательных чисел в памяти компьютера). Пусть у нас есть число -4. В 8-битном представлении оно записывается так:
- Число +4: 0000 01002
- Инверсия: 1111 10112
- Добавление единицы (-4): 1111 11002
Если мы применим логический сдвиг вправо к этому числу, то все биты сместятся на одну позицию вправо, а самый левый (старший) бит будет заменен на 0:
Было: 1111 11002 Стало: 0111 11102Получившееся число 0111 11102 в десятичной системе равно 64+32+16+8+4+2=126. Очевидно, что 126≠-2. Таким образом, логический сдвиг разрушает знак числа, превращая отрицательное число в положительное, что делает его непригодным для деления на два.
Шаг 2. Принцип работы арифметического сдвига
Чтобы корректно делить на два отрицательные числа, используется арифметический сдвиг вправо . Его ключевое отличие от логического состоит в том, как заполняется освобождающийся старший разряд.
При арифметическом сдвиге вправо:
- Все биты смещаются вправо.
- Освободившийся старший разряд заполняется копией предыдущего значения знакового бита (самого левого бита).
Это сохраняет знак числа неизменным. Вернемся к нашему примеру с числом -4 (1111 11002). Знаковый бит равен 1.
Применяем арифметический сдвиг вправо:
Было: 1111 11002 Стало: 1111 11102Здесь новый старший бит стал 1, так как старый знаковый бит был 1. Получившееся число 1111 11102 является представлением числа -2 в дополнительном коде:
- Инвертируем: 0000 00012
- Добавляем 1: 0000 00102=2
- Итог: -2
Таким образом, арифметический сдвиг вправо корректно выполняет операцию целочисленного деления на 2 (⌊x/2⌋), сохраняя знак исходного числа.
Шаг 3. Проверка на другом примере и вывод
Проверим работу арифметического сдвига на числе -5. В 8-битном коде:
- +5: 0000 01012
- -5: 1111 10112
Арифметический сдвиг вправо (1111 10112→1111 11012):
Новое число 1111 11012 соответствует -3:
- Инверсия: 0000 00102
- +1: 0000 00112=3
- Итог: -3
Математически -5/2=-2.5. Целочисленное деление с округлением вниз (floor) дает -3. Арифметический сдвиг реализует именно такое поведение.
Вывод: Логический сдвиг не подходит для деления отрицательных чисел, так как он заполняет старший разряд нулем, что меняет знак числа на положительный. Арифметический сдвиг копирует знаковый бит в старший разряд, что позволяет сохранить знак числа и получить правильный результат целочисленного деления на степень двойки.
а) Логический сдвиг заполняет освободившийся старший разряд нулем, что приводит к изменению знака отрицательного числа на положительный и получению неверного результата.
б) Арифметический сдвиг заполняет освободившийся старший разряд копией знакового бита, что сохраняет знак числа и обеспечивает корректное целочисленное деление на два.
Разобрано влияние заполнения старшего бита на знак числа в дополнительном коде. Приведены примеры для чисел -4 и -5.
Как решение?
Двойная оценка: понятность и подробность. Можно выбрать одно или оба.
У вас другое условие?
Загрузите фото — учтём ваши числа и редакцию.
Частые вопросы
Это точный номер 27.20 из моего учебника?
Номер совпадает с учебником «Информатика (в 2 частях); углубленное обучение», Поляков К.Ю., Еремин Е.А.. Формулировка — пересказ редакции, не дословная цитата. Если в вашей редакции другие числа — загрузите фото.
Какой ответ в задании 27.20?
Краткий ответ: а) Логический сдвиг заполняет освободившийся старший разряд нулем, что приводит к изменению знака отрицательного числа на положительный и получению неверного результата. б) Арифметический сдвиг заполняет освободившийся старший разряд копией знакового бита, что сохраняет знак числа и обеспечивает корректное целочисленное деление на два.
Как пользоваться этим разбором?
Сначала прочитайте условие и чертёж, затем шаги решения по порядку и сверьте свой ход с кратким ответом внизу.
Какой учебник имеется в виду?
«Информатика (в 2 частях); углубленное обучение», Поляков К.Ю., Еремин Е.А.. Проверьте часть, год и автора на обложке. Тема в учебнике: § 27. Хранение в памяти вещественных чисел.
Можно ли списать ответ без решения?
Лучше сначала решить самостоятельно, а разбор использовать для проверки хода и поиска ошибки.