一些背景:
- 在C 20之前,C 标准允许进行任何签名的整数表示,并且n位签名整数的最小保证范围是从
-(2^(N-1) - 1)
到+2^(N-1) - 1
。 - c 20标准提案(如@Sneftel所述(允许唯一的表示从
-2^(N-1)
到+2^(N-1) - 1
的保证范围。 - 据我了解,Min-Max的值范围必须是连续的。
我试图找到任何n位签名整数的最大范围的引号,但没有发现。
所以我想知道(在C 方面(:
- 假设最大可能的N位签名整数范围是从
-2^(N-1)
到+2^(N-1)
的最大范围吗?会更宽吗? - 是否会受到基础平台位实现的影响 - 例如" 3-State-lit"或类似的东西?
c 2a,虽然预计成为C 20标准,但还没有。
除此之外,尽管当前草案强制执行签名整数的两个组合表示,但当前标准(C 17(和所有先驱限制了选择:
具体而言,提供的其他选项是签名的幅度表示和一个补充。两种功能负零。
有有关n位签名整数范围的信息。具体而言,并非所有这些对象代理的N 1 都需要是值代理的N 2 位的一部分,除了狭窄的字符外类型。因此,值代表的n位宽度可能较小。考虑到Pigonhole原理,也就不足为奇了。
假设位是二进制的假设是将语言深深嵌入的,就像它遍及许多其他编程语言一样。改变这将是一个主要项目。
当前没有最终的C 20标准。您可能想到的提案是P1236,它说:
签名整数类型的代表值范围为-2^(n-1(至2^(n-1(-1(包含性(,其中n称为类型的范围指数。
这既是最大又是最小值。由于该提案需要两人对签名整数的补充,因此没有任何变化的机会。毫不费力地,n位不能用来表示超过2^n个不同的值(通过鸽子洞原理(,因此即使仅将其指定为最小范围,范围也可以达到重要性。
。至于三态位,那些不适用于语言。