Подтвердить что ты не робот

Существуют ли какие-либо реализации, не поддерживающие двойные дополнения C?

Как мы все, без сомнения, знаем, стандарт ISO C (и С++, я думаю, хотя меня больше интересует сторона C) позволяет три базовые представления подписанных чисел:

  • два дополнения; дополнение
  • ; и
  • знак/величина.

В записи в Википедии указано, что знак/величина используется на IBM 7090 с 60-х годов, и это дополнение используется PDP-1, CDC 160A и UNIVAC 1100, все из которых относятся к 60-м годам.

Существуют ли какие-либо другие реализации C (или базового оборудования) с этими альтернативными представлениями, которые появились совсем недавно, чем пятьдесят лет назад (и каковы они)?

Кажется, немного расточительно хранить что-то в стандарте для машин, которые больше не существуют.

4b9b3361

Ответ 1

Самый последний пример, который я могу найти, - это UNISYS 2200, основанный на UNIVAC, с арифметикой с одним дополнением. Различные модели были созданы между 1986 и 1997 годами, но ОС еще находилась в активном развитии уже в 2015 году. У них также был компилятор C, как показано здесь.

Кажется вероятным, что они все еще могут быть использованы сегодня.

Ответ 2

У меня нет никаких убедительных доказательств того, что их нет, но я их никогда не видел. Насколько мне известно, все аппаратные средства, не содержащие двух компонентов, были устаревшими задолго до того, как C был стандартизирован.

Возможно, лучший способ собрать доказательства - искать противоречивые требования и другие прямые ошибки в стандарте, подключенном к системам без двоичного дополнения. Если такая реализация никогда не была создана, вероятно, в спецификации есть надзоры, которые станут очевидными, когда кто-то действительно попытается сделать это.