显然这个标准对此没有任何意见,但是从实际/历史的角度来看,我更感兴趣的是:使用非二进制补码算法的系统是否使用无符号的普通字符类型?否则你有潜在的各种奇怪,像空终结器的两个表示,并且无法表示char中的所有“字节”值.做/做系统这个奇怪的确存在吗?
解决方法
这是真的,对于前10或20年的商业生产的电脑(20世纪50年代和60年代),显然对如何用二进制代表负数有一些分歧.实际上有三个竞争者:
>二的补充,不仅赢得了战争,也驱赶了其他人灭绝
一个补码,-x ==〜x
> sign-magnitude,-x = x ^ 0x80000000
我认为最重要的补充机器可能是CDC-6600,当时是地球上最快的机器和第一台超级计算机的直接前身.
不幸的是,你的问题不能真正得到回答,而不是因为这里没有人知道答案:-),而是因为选择从来没有被做过.这实际上是两个原因:
>二进制补码同时接收字节计算机.使用二进制补充IBM System / 360的字节处理命中世界.以前的机器没有字节,只有完整的字有地址.有时程序员会把字符包在这些单词中,有时他们只会使用整个单词. (字长从12位变为60.)
> C字节机器和二进制补码转换十年后才发明. 1号发生在20世纪60年代,C于20世纪70年代首次出现在小型机器上,直到20世纪80年代才被全球接管.
所以从来没有一个机器已经签名字节,C编译器以及二进制补码数据格式之外的时间.空终止字符串的想法可能是一个汇编语言程序员一个又一个想到的一个重复发明的设计模式,但是我不知道在C时代之前由编译器指定它.
在任何情况下,第一个实际标准化的C(“C89”)简单地指定“一个字节或值为零的代码被附加”,并且从上下文中可以清楚,他们试图与数字格式无关.所以,“0”是理论上的答案,但在实践中可能永远不存在.
1.6600是历史上最重要的机器之一,不仅仅是因为它很快.由Seymour Cray本人设计,它引入了无序执行和后来统称为“RISC”的各种其他元素.虽然其他人试图声称信誉,Seymour Cray是RISC架构的真正发明者.他没有发明超级计算机的争议.实际上很难指出他以前没有设计的“超级计算机”.