为什么不在C ++中强制执行2的补码?
|
新的C ++标准仍然拒绝指定整数类型的二进制表示形式。这是因为存在一些不使用2的补码算术的C ++实际实现吗?我觉得很难相信。是因为委员会担心硬件的未来发展会导致“位”的概念过时吗?再次令人难以置信。谁能对此有所启示?
背景:我在一个评论线程中两次感到惊讶(本杰明·林德利(Benjamin Lindley)对这个问题的回答)。首先,从piotr的评论:
有符号类型的右移是未定义的行为
其次,从詹姆斯·坎泽的评论:
分配长型时,如果该值不适合长型,则结果为
实现定义
在我相信它们之前,我必须在标准中查找它们。它们的唯一原因是要容纳非2的补码整数表示形式。为什么?
没有找到相关结果
已邀请:
4 个回复
程琶
催备南菠亨
苦诫
中唯一允许的表示形式。当C广泛传播时,肯定会有1的补码系统:似乎最常提到UNIVAC。
琶竞捆栓