Короткий ответ:
если вы выполняете арифметические действия с двоичными числами фиксированной ширины, используя представление двух дополнений для отрицательных чисел, тогда да, вы игнорируете однобитовое переполнение.
Длинный ответ:
Вы можете считать, что каждый i-й бит в n-битном дополнении до двух имеет разрядное значение 2^i, для 0 ‹= i ‹ n - 1, где бит n - 1 (бит знака) имеет разрядное значение -2^(n - 1 ). Это отрицательное место для бита знака. Если вы вычисляете сумму двух таких чисел, как если бы они были беззнаковыми n-битными двоичными числами, эти случаи прекрасны:
- бит знака не установлен ни в добавлении, ни в результате (переосмыслено как представление с дополнением до двух),
- бит знака установлен ровно в одном из дополнений, независимо от переполнения (которое игнорируется, если оно происходит), или
- бит знака установлен как в слагаемых (поэтому происходит переполнение, которое игнорируется), так и в результате.
Чтобы понять это, проще представить задачу как две отдельные суммы: сумму битов знака и сумму битов значения (других). Переполнение суммы значений дает бит переполнения, разрядное значение которого равно 2^(n-1) -- в точности обратное разрядному значению бита знака -- поэтому такое переполнение отменяет один знаковый бит.
Отрицательный + отрицательный случай требует такой отмены, чтобы результат был представляемым (два знаковых бита + одно переполнение значения = один знаковый бит), а положительный + положительный случай не может обеспечить такую отмену, потому что нет доступного знакового бита для отмены. . В положительном + отрицательном случае происходит переполнение суммы битов значения именно в тех случаях, когда результат неотрицательный; вы можете рассмотреть это, чтобы отменить бит знака отрицательного слагаемого, что дает тот же результат, что игнорирование переполнения общей суммы без знака и переинтерпретация суммы как числа с дополнением до двух.
Остальные случаи дают математические результаты, которые не могут быть представлены в n-битном формате дополнения до двух — либо больше, чем наибольшее представимое число, либо меньше, чем наименьшее. Если игнорировать переполнение, то такие результаты можно распознать по кажущемуся перевороту знака. Что вы будете делать с этим, зависит от стратегии восстановления после ошибок.
person
John Bollinger
schedule
09.01.2015