ГДЗ по информатике, 10 класс, Поляков, номер 4.18: Компьютерная арифметика
Информатика (в 2 частях); углубленное обучение — Поляков К.Ю., Еремин Е.А.
Мария Волкова, методист по информатике Шпаргача обновлено 12 сентября 2026
Условие
Для переменной типа `single` определите логические операции и маски для
а) выделения мантиссы (отбрасывания порядка и знакового бита)
б) восстановления «скрытой единицы» в знаковой части.
Номер как в учебнике. Условие — полный пересказ редакции: те же пункты, числа и факты, не цитата из книги.
Пошаговое решение
В данном задании рассматривается формат чисел с плавающей запятой типа single (одинарной точности) согласно стандарту IEEE 754. Этот формат занимает 32 бита и состоит из трёх полей: знакового бита (1 бит), поля порядка/экспоненты (8 битов) и поля мантиссы/дроби (23 бита).
Шаг 1. Анализ структуры числа single и задача а)
Структура 32-битного числа выглядит так:
| Поле | Знак (S) | Порядок (E) | Мантисса (M) |
|---|---|---|---|
| Количество битов | 1 | 8 | 23 |
| Позиции (с нуля справа) | 31 | 30--23 | 22--0 |
Задача а): Выделение мантиссы.
Чтобы выделить только поле мантиссы, необходимо обнулить старшие 9 битов (знаковый бит и 8 битов порядка). Для этого используется логическая операция И (AND) с маской, в которой младшие 23 бита равны 1, а старшие 9 битов равны 0.
Маска в двоичном виде:
0000 0000 09 нулей 1111 1111 1111 1111 1111 1111 111123 единицПереведём эту маску в шестнадцатеричную систему счисления для удобства записи в коде:
- Старший байт: 0000 0000→0x00
- Средний байт: 0111 1111→0x7F (так как первый ноль относится к знаку, а следующие 7 единиц — к началу мантиссы? Нет, давайте разобьем строго на 4-битные группы от младшего разряда).
Давайте пересчитаем маску аккуратно, группируя по 4 бита справа налево:
Биты 0--22 равны 1. Биты 23--31 равны 0.
Группировка по 4 бита (от младших к старшим):
- Биты 0--3: 11112=F16
- Биты 4--7: 11112=F16
- Биты 8--11: 11112=F16
- Биты 12--15: 11112=F16
- Биты 16--19: 11112=F16
- Биты 20--23: Здесь нужно быть внимательным. Мантисса занимает биты 0--22. Значит, бит 22 равен 1, а бит 23 (начало экспоненты) равен 0. Группа битов 20--23: 01112=716.
- Биты 24--27: 00002=016
- Биты 28--31: 00002=016
Таким образом, маска в шестнадцатеричном виде: 0x007FFFFF.
Логическая операция: x & 0x007FFFFF.
Шаг 2. Анализ задачи б) и восстановление скрытой единицы
Задача б): Восстановление «скрытой единицы».
В нормализованных числах формата IEEE 754 перед двоичной точкой всегда подразумевается единица, которая не хранится явно в памяти (экономия бита). Полное значение мантиссы равно 1.M, где M — это хранимые 23 бита дробной части.
Чтобы получить полное числовое значение мантиссы (включая целую часть 1), нужно добавить эту единицу к хранимой дроби. Поскольку хранимая мантисса находится в младших 23 битах, а «скрытая единица» соответствует весу 223 относительно начала поля мантиссы (или просто является старшим разрядом при интерпретации мантиссы как целого числа со сдвигом), то в контексте побитовых операций над 32-битным словом:
Если мы хотим модифицировать само представление или вычислить полную мантиссу как целое число, нам нужно установить бит, соответствующий позиции 23 (если считать от 0 до 22 для дробной части, то единица стоит на месте 23-го разряда веса 20 в нормализованном числе, но в битовой сетке слова она находится сразу после поля мантиссы).
Однако, чаще всего под «восстановлением» понимают получение значения 1+M. В терминах логических операций над битовым полем мантиссы, если мы работаем с изолированным полем мантиссы (как в пункте а), то добавление единицы — это арифметическая операция сложения. Но если речь идет о манипуляции с исходным 32-битным словом, чтобы сделать явной ту единицу, которая «пропущена» в формате хранения, то обычно это делается через сдвиг или установку конкретного бита.
Давайте посмотрим на формулировку «в знаковой части». Это может быть опечатка в условии учебника, имеющая в виду «в значении мантиссы» или «в представлении числа». Скорее всего, имеется в виду формирование полного значения мантиссы.
Если рассматривать задачу как операцию над битовым полем, выделенным в пункте а), то «скрытая единица» имеет вес 223 (если мантисса трактуется как целое число M, то реальная дробь M/2}23, а полная мантисса (223+M)/2}23). Чтобы добавить эту единицу к выделенному полю мантиссы, можно использовать операцию ИЛИ (OR) с маской, содержащей единицу на позиции, соответствующей весу 223.
Но в рамках 32-битного слова позиция 23 занята младшим битом экспоненты. Поэтому прямое применение маски OR к исходному слову некорректно без предварительного выделения мантиссы.
Вероятный смысл задания: определить операцию, которая превращает хранимую дробь M в число 1.M. Если мы уже выделили мантиссу M (биты 0--22), то чтобы получить 1.M в виде целого числа (где 1 — это старший бит), нужно выполнить операцию ИЛИ с константой 223 (в десятичном виде 8388608, в шестнадцатеричном 0x00800000).
Маска для установки скрытой единицы (при работе с выделенной мантиссой):
0x00800000Двоично это: 0000 0000 1000 0000 0000 0000 0000 0000.
Логическая операция: m | 0x00800000, где m — результат пункта а).
Если же вопрос касается непосредственно исходного слова, то «восстановление» подразумевает понимание того, что реальное значение мантиссы получается прибавлением 1 к дробной части. В контексте компьютерной арифметики и масок, наиболее частый ответ для таких задач — использование операции ИЛИ с маской, устанавливающей нужный бит.
Шаг 3. Проверка и итоговые выводы
Проверим пункт а). Маска 0x007FFFFF оставляет неизменными биты 0--22 и обнуляет биты 23--31. Это корректно выделяет поле мантиссы.
Проверим пункт б). Хранится только дробная часть M. Нормализованное число имеет вид (-1)S·1.M·2E-Bias. Чтобы получить значение 1.M в виде целого числа (для последующих арифметических действий или сравнений), нужно поставить единицу на место, которое было бы старшим битом мантиссы, если бы она была полной. При работе с выделенной мантиссой (которая лежит в младших битах), эта единица должна быть установлена в бит 23 относительно начала слова (если мы считаем, что мантисса выровнена по правому краю). Константа 223 в шестнадцатеричном виде действительно 0x00800000. Операция ИЛИ установит этот бит в 1, не трогая остальные.
Таким образом:
- а) Операция: И (
AND). Маска: 0x007FFFFF. - б) Операция: ИЛИ (
OR). Маска: 0x00800000 (применяется к результату пункта а).
а) Логическая операция И (AND), маска 0x007FFFFF
б) Логическая операция ИЛИ (OR), маска 0x00800000 (применяется к выделенной мантиссе)
Формат single (IEEE 754): 1 бит знака, 8 бит порядка, 23 бита мантиссы. Для выделения мантиссы нужно обнулить старшие 9 бит, используя маску AND с 23 единицами в конце. Скрытая единица в нормализованных числах не хранится, но подразумевается перед двоичной точкой. Чтобы восстановить её в виде целочисленного представления мантиссы (1.M), нужно установить бит с весом 223, используя операцию OR с маской 0x00800000.
Как решение?
Двойная оценка: понятность и подробность. Можно выбрать одно или оба.
У вас другое условие?
Загрузите фото — учтём ваши числа и редакцию.
Частые вопросы
Это точный номер 4.18 из моего учебника?
Номер совпадает с учебником «Информатика (в 2 частях); углубленное обучение», Поляков К.Ю., Еремин Е.А.. Формулировка — пересказ редакции, не дословная цитата. Если в вашей редакции другие числа — загрузите фото.
Какой ответ в задании 4.18?
Краткий ответ: а) Логическая операция И (AND), маска 0x007FFFFF б) Логическая операция ИЛИ (OR), маска 0x00800000 (применяется к выделенной мантиссе).
Как пользоваться этим разбором?
Сначала прочитайте условие и чертёж, затем шаги решения по порядку и сверьте свой ход с кратким ответом внизу.
Какой учебник имеется в виду?
«Информатика (в 2 частях); углубленное обучение», Поляков К.Ю., Еремин Е.А.. Проверьте часть, год и автора на обложке. Тема в учебнике: § 4. Компьютерная арифметика.
Можно ли списать ответ без решения?
Лучше сначала решить самостоятельно, а разбор использовать для проверки хода и поиска ошибки.