¿Hay implementaciones de C que no sean complementos de dos?


Como todos sin duda sabemos, el estándar ISO C (y C++ también, creo, aunque estoy más interesado en el lado C) permite tres representaciones subyacentes de números con signo:

  • complemento de dos;
  • complemento de unos; y
  • signo/magnitud.

La entrada de Wikipedia indica que sign / magnitude se usa en el IBM 7090 de los años 60, y que el complemento de esos es utilizado por el PDP-1, CDC 160A y UNIVAC 1100, todos los cuales se remontan a los años 60 como bien.

¿Hay otras implementaciones de C (o hardware subyacente) con estas representaciones alternativas, que han salido un poco más recientemente que hace cincuenta años (y cuáles son)?

Parece un poco derrochador mantener algo en un estándar para máquinas que ya no existen.

Author: Community, 2012-09-05

2 answers

El ejemplo más reciente que puedo encontrar es la serie UNISYS 2200, basada en UNIVAC, con aritmética de complement-complemento. Los diversos modelos se produjeron entre 1986 y 1997, pero el sistema operativo todavía estaba en desarrollo activo hasta 2015. También tenían un compilador de C, como se ve aquí.

Parece probable que todavía estén en uso hoy en día.

 26
Author: Mike Seymour,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-10 08:56:24

No tengo ninguna evidencia concluyente de que no exista, pero nunca he visto una. Que yo sepa, todo el hardware que no era de dos complementos era obsoleto mucho antes de que C fuera estandarizado.

Tal vez la mejor manera de reunir evidencia sería buscar requisitos conflictivos y otros errores directos en el estándar conectado a sistemas que no son de dos complementos. Si no se ha creado tal implementación, es probable que haya descuidos en la especificación que se harían evidentes cuando alguien realmente trata de hacer uno.

 5
Author: R..,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-09-05 08:11:08