Существуют ли какие-либо реализации, не поддерживающие двойные дополнения C?
Как мы все, без сомнения, знаем, стандарт ISO C (и С++, я думаю, хотя меня больше интересует сторона C) позволяет три базовые представления подписанных чисел:
- два дополнения;
дополнение
- ; и
- знак/величина.
В записи в Википедии указано, что знак/величина используется на IBM 7090 с 60-х годов, и это дополнение используется PDP-1, CDC 160A и UNIVAC 1100, все из которых относятся к 60-м годам.
Существуют ли какие-либо другие реализации C (или базового оборудования) с этими альтернативными представлениями, которые появились совсем недавно, чем пятьдесят лет назад (и каковы они)?
Кажется, немного расточительно хранить что-то в стандарте для машин, которые больше не существуют.
Ответы
Ответ 1
Самый последний пример, который я могу найти, - это UNISYS 2200, основанный на UNIVAC, с арифметикой с одним дополнением. Различные модели были созданы между 1986 и 1997 годами, но ОС еще находилась в активном развитии уже в 2015 году. У них также был компилятор C, как показано здесь.
Кажется вероятным, что они все еще могут быть использованы сегодня.
Ответ 2
У меня нет никаких убедительных доказательств того, что их нет, но я их никогда не видел. Насколько мне известно, все аппаратные средства, не содержащие двух компонентов, были устаревшими задолго до того, как C был стандартизирован.
Возможно, лучший способ собрать доказательства - искать противоречивые требования и другие прямые ошибки в стандарте, подключенном к системам без двоичного дополнения. Если такая реализация никогда не была создана, вероятно, в спецификации есть надзоры, которые станут очевидными, когда кто-то действительно попытается сделать это.