一些背景:
-(2^(N-1) - 1)
至+2^(N-1) - 1
。-2^(N-1)
到+2^(N-1) - 1
的表示形式。我试图找到N位有符号整数最大范围内的所有引号,但没有找到。
所以我想知道(就C ++而言):
-2^(N-1)
到+2^(N-1)
是正确的吗?会更宽吗?答案 0 :(得分:3)
当前没有最终的C ++ 20标准。您可能想到的提案是P1236,它说:
有符号整数类型的可表示值范围是-2 ^(N-1)到2 ^(N-1)-1(含),其中N称为该类型的范围指数。
这既是最大值又是最小值。因为该提案要求带符号整数的二进制补码,所以没有机会进行修改。通常,N位不能用于表示超过2 ^ N个不同的值(通过信鸽原理),因此,即使仅将其指定为最小范围,该范围也要尽可能地大。
至于三态位,这些位不适用于该语言。
答案 1 :(得分:3)
C ++ 2a预计将成为C ++ 20标准,但目前尚不存在。
除此之外,尽管当前草案对有符号整数强制执行two's-complement representation,但当前标准(C ++ 17)和所有前驱版本均会进行限制选择:
具体来说,提供的其他选项是signed magnitude representation和ones' complement。两者均具有负零。
有关N位带符号整数的范围的信息。具体来说,不是所有对象表示的N 1 位都需要是the exception of the narrow character types表示的N 2 位的一部分。因此,值表示的N位宽度可能会更小。考虑到pigeonhole-principle,它变大就不足为奇了。
关于位是二进制的假设已深深地嵌入到该语言中,就像它遍及许多其他编程语言一样。改变那将是一个重大项目。