相关疑难解决方法(0)

标准委员会关心的异域架构

我知道C和C++标准留下了语言实现的许多方面 - 仅仅因为如果存在具有其他特征的体系结构,那么为它编写符合标准的编译器是非常困难或不可能的.

我知道40年前任何电脑都有自己独特的规格.但是,我不知道今天使用的任何架构:

  • CHAR_BIT != 8
  • signed 不是两个补充(我听说Java有这个问题).
  • 浮点不符合IEEE 754(编辑:我的意思是"不是IEEE 754二进制编码").

我问的原因是我经常向人们解释C++不强制要求任何其他低级方面如固定大小的类型.这很好,因为与其他语言不同,它使你的代码在正确使用时可以移植(编辑:因为它可以移植到更多架构而不需要模拟机器的低级方面,例如符号+幅度架构上的二进制补码算法) .但我感到很难过,我自己也无法指出任何特定的架构.

所以问题是:哪些架构具有上述属性?

uint*_ts是可选的.

c c++ architecture

149
推荐指数
7
解决办法
1万
查看次数

是否存在C的非二进制补码实现?

我们毫无疑问地知道,ISO C标准(以及C++,我认为,虽然我对C方面更感兴趣)允许签名数字的三个基础表示:

  • 二补;
  • 补充; 和
  • 符号/幅值.

维基百科的条目表明,60年代的IBM 7090使用了标志/幅度,PDP-1,CDC 160A和UNIVAC 1100使用的是补充,所有这些都可以追溯到60年代.

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

对于不再存在的机器,保持某种标准似乎有点浪费.

c iso representation negative-number language-lawyer

41
推荐指数
2
解决办法
3605
查看次数

一个人的补充是一个现实世界的问题,还是一个历史问题?

另一个问题是关于确定C中的奇数/偶数,并且惯用(x&1)方法被正确地标记为基于补体的系统被破坏,C标准允许.

系统真的存在于计算机博物馆之外的"现实世界"吗?自1970年代以来,我一直在编码,我很确定我从来没有见过这样的野兽.

有人在为这样的系统开发或测试代码吗?如果没有,我们是否应该担心这些事情,还是应该将它们与纸带和打卡一起放入101室

c history numerical

28
推荐指数
8
解决办法
5528
查看次数

没有减号的减法

如何在没有-运算符的情况下减去C中的两个整数?

c

11
推荐指数
5
解决办法
2万
查看次数