Are there any non-twos-complement implementations of C?

六眼飞鱼酱① 提交于 2019-11-26 01:34:27

问题


As we all no doubt know, the ISO C standard (and C++ as well, I think, though I\'m more interested on the C side) allows three underlying representations of signed numbers:

  • two\'s complement;
  • ones\' complement; and
  • sign/magnitude.

Wikipedia\'s entry states that sign/magnitude is used on the IBM 7090 from the 60s, and that ones\' complement is used by the PDP-1, CDC 160A and UNIVAC 1100, all of which date back to the 60s as well.

Are there any other implementations of C (or underlying hardware) with these alternative representations, that have come out a little more recently than fifty years ago (and what are they)?

It seems a little wasteful to keep something in a standard for machines no longer in existence.


回答1:


The most recent example I can find is the UNISYS 2200 series, based on UNIVAC, with ones-complement arithmetic. The various models were produced between 1986 and 1997 but the OS was still in active development as late as 2015. They also had a C compiler, as seen here.

It seems likely that they may still be in use today.




回答2:


I don't have any conclusive evidence that none exist, but I've never seen one. To my knowledge, all non-twos-complement hardware was obsolete long before C was standardized.

Perhaps the best way to gather evidence would be to look for conflicting requirements and other outright bugs in the standard connected to non-twos-complement systems. If no such implementation has ever been created, it's likely there are oversights in the specification that would become apparent when somebody actually tries to make one.



来源:https://stackoverflow.com/questions/12276957/are-there-any-non-twos-complement-implementations-of-c

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!