47

毫无疑问,我们都知道,ISO C 标准(以及 C++,我认为,尽管我对 C 方面更感兴趣)允许有符号数字的三种底层表示:

  • 二进制补码;
  • 个的补码;和
  • 符号/大小。

Wikipedia 的条目指出,符号/幅度用于 60 年代的 IBM 7090,而 PDP-1、CDC 160A 和 UNIVAC 1100 使用的是补码,所有这些都可以追溯到 60 年代。

是否存在具有这些替代表示的 C(或底层硬件)的任何其他实现,这些实现比五十年前(它们是什么)更晚一些?

将某些东西保留在不再存在的机器标准中似乎有点浪费。

4

2 回答 2

37

我能找到的最新示例是基于 UNIVAC 的UNISYS 2200系列,具有补码算法。各种型号都是在 1986 年至 1997 年间生产的,但操作系统直到 2015 年仍在积极开发中。他们还有一个 C 编译器,如此处所示

看来它们今天可能仍在使用。

于 2012-09-05T09:07:46.417 回答
6

我没有任何确凿的证据表明不存在,但我从未见过。据我所知,所有非二进制补码硬件早在 C 标准化之前就已经过时了。

也许收集证据的最佳方式是在与非双补系统相关的标准中寻找相互冲突的要求和其他明显的错误。如果从未创建过这样的实现,那么规范中可能存在疏忽,当有人真正尝试实现时,这些疏忽就会变得明显。

于 2012-09-05T08:11:08.120 回答