Нетрадиционные системы счисления

Уравновешенная троичная система счисления

Быть может, самой изящной и всех систем счисления является уравновешенная троичная система счисления (по основанию 3), которой используются «триты» (троичные цифры) -1, 0, `1.

Уравновешенные троичные числа Десятичные числа
  `1              
`1 . `1 `1         32 5/9
`1 `1 .         -32 5/9
` `1               -33
      . ½

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

1. Отрицание числа осуществляется взаимной заменой 1 и `1.

2. Знак числа задаётся его наиболее значимым ненулевым тритом; в общем случае можно сравнивать любые два числа, используя лексикографический порядок при чтении слова слева направо, как в десятичной системе.

3. Операция округления в уравновешенной троичной системе выполняется совсем просто, если воспользоваться таблицей сложения.

Уравновешенная троичная система счисления была положена в основу экспериментальной советской вычислительной машины СЕТУНЬ.

Системы счисления с отрицательными основаниями

Системы счисления по отрицательному основанию впервые описаны Виттрорио Грюнвальдом (Vittorio Grunwald) в Giornale di Matematiche di Battaglini (1885). В этой работе изложены правила выполнения в таких системах четырёх арифметических действий, а также рассмотрены правила извлечения корня, проверка делимости и перевод из одной системы счисления в другую. Однако работа Грюнвальна осталась незамеченной, так как она была опубликована в недостаточно известном журнале и вскоре забыта. Следующее исследование по системам счисления по отрицательному основанию опубликовал О. Кемнер (A.J. Kempner) в 1936 г. В этой работе о рассмотрел свойства систем счисления с нецелыми основаниями и отметил в примечаниях, что системы счисления с отрицательными основаниями также будут иметь право на существование. Двадцать лет спустя эта идея снова была предложена, на этот раз З. Павляком (Z. Pawlak) и А. Вакуличем (A.Wakulicz), а также Л. Уэйделом (L. Waidel) в 1957 г. Экспериментальные вычислительные машины, в которых (‑2) использовалось в качестве основания системы счисления, были созданы в Польше в конце 50-х г.г.

Отрицательные числа

Двоичные числа могут быть как со знаком, так и без знака. Числа без знака, записанные в одном байте, используют все восемь битов для получения значения. Например, 111111112=25510. Для чисел со знаком только семь младших битов байта используется для получения его значения, а старший восьмой бит является знаковым битом. Значение 0 старшего бита соответствует положительному числу, а 1 – отрицательному. Для отрицательных чисел также меняется способ представления значения. Отрицательные двоичные числа содержат единичный бит в старшем разряде и выражаются двоичным дополнением. Для представления двоичного числа необходимо инвертировать все биты, равного по модулю положительного числа, а затем соответствующего прибавить 1.

Исходное двоичное число (соответствует десятичному 65)
Инверсные биты:
Плюс 1, т.е. дополнительный код (соответствует десятичному числу (-65)

Для определения абсолютного значения отрицательного двоичного числа также выполняют предыдущие операции – инвертируют все биты и прибавляют 1.

Исходное отрицательно число (соответствует десятичному (-65))  
Инверсные биты:
Плюс 1 (соответствует десятичному числу 65_

Сумма 65 и (-65) должна составлять ноль. Получим:

 
+
 

Все восемь бит имеют нулевое значение. Перенос единичного бита влево потерян.

Двоичное вычитание выполнятся следующим образом: инвертируется знак вычитаемого и складывают два числа. Вычтем, например 42 из 65. Двоичное представление для 42 – это 001010102, и его двоичного дополнение – 110101012:

     
+ (-42)   +
     

Если байт интерпретируется как целое число со знаком, то старший бит (бит 7) указывает знак числа. Знаковый бит равен 0, если число положительно или равно 0, и 1, если оно отрицательно.

Если байт содержит числа со знаком, то он может представлять положительные значения от 0 (двоичное значение 00000000) до +127 (двоичное значение 01111111) и отрицательные числа от –1 (двоичное значение 11111111) до –128 двоичное значение (10000000).

Определение 7. Прямой код. Прямой код двоичного числа совпадает по изображению с записью самого числа. Значение знакового разряда для положительных чисел равно 0, а для отрицательных чисел 1.

Определение 9. Обратный код. Обратный код для положительного числа совпадает с прямым кодом. Для отрицательного числа все цифры числа заменяются на противоположные (1 на 0, 0 на 1), а в знаковый разряд заносится единица.

Определение 10. Дополнительный код. Дополнительный код положительного числа совпадает с прямым кодом. Для отрицательного числа дополнительный код образуется путем получения обратного кода и добавлением к младшему разряду единицы.

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

Для числа +10000012

Прямой код Обратный код Дополнительный код


Для числа -10000012

Прямой код Обратный код Дополнительный код

Наши рекомендации