Представления чисел со знаком


В вычислительной технике представления чисел со знаком необходимы для кодирования отрицательных чисел в двоичных системах счисления.

В математике отрицательные числа в любом основании представляются путем добавления к ним префикса со знаком минус ("-"). Однако в компьютерном оборудовании числа представлены только последовательностями битов без дополнительных символов. Четыре самых известных метода расширения двоичной системы счисления для представления чисел со знаком : знак и величина , дополнение до единиц, дополнение до двух и двоичное смещение . Некоторые из альтернативных методов используют неявные знаки вместо явных, например отрицательный двоичный код с основанием -2 . Соответствующие методы могут быть разработаны для других оснований., будь то положительные, отрицательные, дробные или другие разработки на такие темы.

Не существует определенного критерия, по которому какое-либо из представлений универсально лучше. Для целых чисел в большинстве современных вычислительных устройств используется представление с дополнением до двух, хотя в мэйнфреймах серии Unisys ClearPath Dorado используется дополнение до единицы.

Первые дни цифровых вычислений были отмечены конкурирующими идеями как об аппаратных технологиях, так и о математических технологиях (системах счисления). Одним из больших споров был формат отрицательных чисел, и некоторые из ведущих экспертов той эпохи выразили очень сильные и разные мнения. [ нужна цитата ] Один лагерь поддерживал два дополнения , систему, которая доминирует сегодня. Другой лагерь поддерживал дополнение до единиц, где отрицательное значение формируется путем инвертирования всех битов в его положительном эквиваленте. Третья группа поддерживала знак и величину (значение знака), где значение изменяется с положительного на отрицательное просто путем переключения старшего бита слова.

Были аргументы за и против каждой из систем. Знак и величина позволили упростить отслеживание дампов памяти (распространенный процесс в 1960-х годах), поскольку небольшие числовые значения используют меньше 1 бит. Эти системы выполняли математику с дополнением до единицы внутри себя, поэтому числа должны были быть преобразованы в значения дополнения до единицы, когда они были переданы из регистра в математическую единицу, а затем преобразованы обратно в знак-величину, когда результат был передан обратно в регистр. Электронике требовалось больше вентилей, чем другим системам, что было ключевой проблемой, когда стоимость и упаковка дискретных транзисторов были критическими. IBM была одной из первых сторонников знаковой величины, а их компьютеры серий 704 , 709 и 709x были, пожалуй, самыми известными системами, в которых она использовалась.

Дополнение единиц позволило несколько упростить конструкцию оборудования, поскольку не было необходимости преобразовывать значения при передаче в математический блок и из него. Но у него также была нежелательная характеристика со знаком-величиной: способность представлять отрицательный ноль (-0). Отрицательный нуль ведет себя точно так же, как положительный нуль: при использовании в качестве операнда в любом вычислении результат будет одинаковым, независимо от того, является ли операнд положительным или отрицательным нулем. Недостатком является то, что наличие двух форм одного и того же значения требует двух сравнений при проверке на равенство с нулем. Вычитание дополнения до единицы также может привести к заимствованию в конце .(описано ниже). Можно возразить, что это делает логику сложения и вычитания более сложной или упрощает ее, поскольку вычитание требует простого инвертирования битов второго операнда при его передаче в сумматор. PDP-1 , серия CDC 160 , серия CDC 3000 , серия CDC 6000 , серия UNIVAC 1100 и компьютер LINC используют представление дополнения до единицы.