1. Чем отличается представление в компьютере целых чисел со знаком и без знака?
Представление целых чисел со знаком и без знака отличается тем, что в числах со знаком один бит выделяется для указания знака (обычно старший бит: 0 для положительных чисел, 1 для отрицательных), а оставшиеся биты используются для представления значения. В числах без знака все биты представляют значение, что увеличивает диапазон представимых чисел в положительную сторону.
2. Приведите примеры величин, которые всегда имеют целые неотрицательные значения.
Примеры величин с целыми неотрицательными значениями: возраст человека, количество предметов, идентификаторы объектов, индексы массивов, счетчики.
3. Как представлены в компьютере целые числа без знака?
Целые числа без знака представлены в компьютере как двоичные числа, где все разряды используются для представления значения. Например, для 4 разрядов диапазон чисел будет от 0 до 2^4 - 1, то есть от 0 до 15.
4. Как изменится диапазон представления чисел, если увеличить количество разрядов на 1? На 2? На n?
На 1 разряд, диапазон удвоится. Например, с n разрядами диапазон чисел от 0 до 2^n - 1 станет от 0 до 2^(n+1) - 1. На 2 разряда, диапазон увеличится в 4 раза. На n разрядов, диапазон увеличится в 2^n раз.
5. Какое максимальное целое беззнаковое число можно записать с помощью К двоичных разрядов? Что произойдёт, если прибавить единицу к этому максимальному значению?
Максимальное целое беззнаковое число, которое можно записать с помощью К двоичных разрядов, равно 2^K - 1. Если прибавить 1 к этому значению, произойдет переполнение, и результат станет равным 0 (в системе с фиксированным количеством разрядов).
6. Как действует процессор при переполнении?
При переполнении процессор обычно устанавливает флаг переполнения в регистре состояния (например, флаг Overflow в архитектуре x86), чтобы сигнализировать о том, что результат вышел за пределы диапазона представимых значений. Это позволяет программе обработать ошибку или выполнить корректирующие действия.
7. Почему максимальное положительное и минимальное отрицательное значения целых двоичных чисел со знаком имеют разные абсолютные значения?
Максимальное положительное и минимальное отрицательное значения целых двоичных чисел со знаком имеют разные абсолютные значения из-за асимметрии в представлении чисел в системе дополнительного кода. В этой системе старший бит используется для знака, а диапазон значений определяется количеством разрядов: Для n разрядов максимальное положительное число —это 2^n−1 −1.
Минимальное отрицательное число — это −2^n−1.
Эта асимметрия возникает, потому что 0 занимает одну из возможных комбинаций битов, оставляя на одну комбинацию меньше для положительных чисел.
8. Верно ли, что положительные числа кодируются одинаково в знаковом и беззнаковом форматах?
Да, верно. Положительные числа кодируются одинаково в знаковом и беззнаковом форматах, поскольку старший бит в обоих случаях равен 0 для положительных чисел, и их двоичное представление полностью совпадает. Различие появляется только при интерпретации значения старшего бита в случае отрицательных чисел.
*9. Докажите, что алгоритмы Al, А2 и А3 всегда дают один и тот же результат.
Алгоритм A1 1) Выполнить инверсию каждого разряда двоичного представления числа X. Такой код называется обратным. 2) К полученному результату прибавить единицу.
Алгоритм А2 1) Вычислить число X - 1 и перевести его в двоичную систему. 2) Выполнить инверсию каждого разряда результата.
Алгоритм АЗ Выполнить инверсию всех старших битов числа, кроме последней (младшей) единицы и тех нулей, которые стоят после неё.
Для доказательства эквивалентности алгоритмов A1, A2 и A3 необходимо показать, что каждый из них преобразует число X в его представление в дополнительном коде.
Алгоритм A1. Инверсия всех разрядов двоичного представления числа X создает обратный код числа X. Прибавление единицы к обратному коду приводит к дополнительному коду числа X. Это стандартный процесс получения дополнительного кода из прямого кода.
Алгоритм A2. Вычисление X - 1 уменьшает значение числа на единицу, при этом младшие разряды до первой единицы меняются с 1 на 0. Инверсия всех разрядов X - 1 эквивалентна созданию дополнительного кода числа X. Этот результат идентичен тому, что дает алгоритм A1, поскольку прибавление единицы к обратному коду X корректирует биты таким же образом, как операция вычитания единицы перед инверсией.
Алгоритм A3. Инверсия всех старших битов числа, кроме последней младшей единицы и нулей после нее, эквивалентна созданию дополнительного кода. Логика здесь основывается на том, что инвертируются только те разряды, которые отличаются от дополнительного кода. Оставление младшей единицы и следующих за ней нулей неизменными корректно описывает изменение разрядов при переходе к дополнительному коду.
Доказательство эквивалентности. Дополнительный код для числа X — это 2^n - X, где n — количество разрядов. Все три алгоритма преобразуют исходное двоичное представление числа X в его дополнительный код, выполняя одинаковые операции (инверсия и прибавление единицы). Хотя последовательность операций в алгоритмах отличается, математический результат остается идентичным, поскольку они основаны на одних и тех же свойствах двоичной арифметики.
Алгоритмы A1, A2 и A3 дают один и тот же результат, так как все они эквивалентно реализуют переход от числа X к его представлению в дополнительном коде.
10. Что получится, если правила перевода в дополнительный код применить к отрицательному числу?
Если применить правила перевода в дополнительный код к отрицательному числу, его двоичное представление останется в том же формате. Для отрицательных чисел дополнительный код уже используется как их представление, поэтому повторное применение не изменит значения.
11. Как можно проверить правильность перевода в дополнительный код?
Проверка правильности перевода в дополнительный код выполняется путём обратного преобразования. Инверсия всех разрядов и добавление единицы к числу в дополнительном коде должны восстановить исходное значение. Для отрицательных чисел знак необходимо учитывать при интерпретации результата.
12. Какое минимальное отрицательное значение можно записать с помощью К двоичных разрядов?
Минимальное отрицательное значение с К двоичными разрядами равно -2^(K-1). Это связано с тем, что один разряд используется для знака, а оставшиеся разряды определяют абсолютную величину числа.
*13. Может ли быть переполнение при сложении двух отрицательных чисел? Какой знак будет у результата?
При сложении двух отрицательных чисел может произойти переполнение, если результат выходит за пределы допустимого диапазона значений. Например, если результат меньше минимального отрицательного значения (-2^(K-1)), это будет переполнение, и знак результата окажется положительным из-за ошибки в интерпретации.
14. В чём главное преимущество дополнительного кода при ко-дировании отрицательных чисел?
Главное преимущество дополнительного кода при кодировании отрицательных чисел заключается в том, что сложение и вычитание выполняются одинаково. Нет необходимости в отдельной логике для вычитания, так как вычитание можно заменить сложением с отрицательным числом.
15. Почему компьютер может обойтись без вычитания?
Компьютер может обойтись без вычитания благодаря свойствам дополнительного кода. Вычитание числа X сводится к сложению его противоположного числа (-X). Это упрощает архитектуру процессора, так как операции вычитания и сложения обрабатываются одной и той же схемой.