¿Existen implementaciones de C que no sean complemento a dos?

Resuelto paxdiablo asked hace 12 años • 2 respuestas

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

  • complemento a dos;
  • complemento de uno; y
  • signo/magnitud.

La entrada de Wikipedia indica que el signo/magnitud se usa en el IBM 7090 de los años 60, y que el PDP-1, CDC 160A y UNIVAC 1100 usan el complemento, todos los cuales también se remontan a los años 60.

¿Existen otras implementaciones de C (o hardware subyacente) con estas representaciones alternativas, que hayan aparecido hace poco más de cincuenta años (y cuáles son)?

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

paxdiablo avatar Sep 05 '12 14:09 paxdiablo
Aceptado

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

Parece probable que todavía se utilicen en la actualidad.

Mike Seymour avatar Sep 05 '2012 09:09 Mike Seymour

No tengo ninguna evidencia concluyente de que exista, pero nunca he visto ninguna. Hasta donde yo sé, todo el hardware que no era complemento a dos estaba obsoleto mucho antes de que se estandarizara C.

Quizás la mejor manera de reunir evidencia sería buscar requisitos conflictivos y otros errores evidentes en el estándar relacionados con sistemas que no son de complemento a dos. Si nunca se ha creado tal implementación, es probable que haya descuidos en la especificación que se harían evidentes cuando alguien realmente intente crear una.