c language-lawyer iso negative-number representation

¿Hay implementaciones complementarias de C en dos?



language-lawyer iso (2)

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

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

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;
  • el complemento de unos; y
  • signo / magnitud

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

¿Existen otras implementaciones de C (o hardware subyacente) con estas representaciones alternativas, que han aparecido 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.


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

Quizás la mejor manera de reunir pruebas sería buscar requisitos conflictivos y otros errores directos en el estándar conectado a sistemas que no son de dos en dos. Si no se ha creado tal implementación, es probable que existan descuidos en la especificación que se pondrían de manifiesto cuando alguien intentara hacer una.