相关疑难解决方法(0)

是否存在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++中强制执行2的补码?

新的C++标准仍然拒绝指定整数类型的二进制表示.这是因为C++的实际实现不使用2的补码算法吗?我觉得很难相信.是不是因为委员会担心硬件的未来发展会让"过时"的概念变得过时?再次难以置信.任何人都可以对此有所了解吗?

背景:我在一个评论帖中惊讶两次(Benjamin Lindley对这个问题的回答).首先,来自piotr的评论:

签名类型的右移是未定义的行为

其次,来自James Kanze的评论:

当分配给long时,如果该值不适合long,则结果是实现定义的

在我相信之前,我必须在标准中查看这些内容.它们的唯一原因是适应非二进制补码整数表示.为什么?

c++ binary standards

26
推荐指数
2
解决办法
3414
查看次数

符号量,一个补码,两个补码

因此,我的教授有一个问题要列出所有正数和负数,这些数字可以用一个,二个补码和符号量表示:

使用4位数,例如(5)10 =(0101)2写出所有正数和所有负数,可以用符号幅度,1的补码和2的补码表示4位.

现在,我不是在寻找澄清的答案.

  • 对于符号幅度,第一位表示数字的符号.所以在提供的例子中,负五是-5 =(1101),那些补数=(0101)二进制补码(1010)
  • 符号幅度仅允许三位显示数字,一位用于符号(从右到左的前导位.)这意味着我们只有8种组合.这是0-7和-0-(-6)之间的数字我们有16个?所以0-15和-0 - ( - 15)

谁能更好地解释这个问题?

binary numbers

0
推荐指数
1
解决办法
9263
查看次数