【发布时间】:2019-11-09 07:16:39
【问题描述】:
一些背景:
- 在 C++20 之前,C++ 标准允许任何有符号整数表示,并且 N 位有符号整数的最小保证范围是从
-(2^(N-1) - 1)到+2^(N-1) - 1。 - C++20 标准建议(如@Sneftel 所述) 允许唯一的表示具有从
-2^(N-1)到+2^(N-1) - 1的保证范围。 - 据我了解,最小值-最大值的范围必须是连续的。
我试图找到 N 位有符号整数的最大范围的任何引号,但没有找到。
所以我想知道(就 C++ 而言):
- 假设 N 位有符号整数的最大可能范围限制在
-2^(N-1)到+2^(N-1)是否正确?能不能再宽一点? - 它会受到底层平台位实现的影响 - 例如“3-state-bit”或类似的东西吗?
【问题讨论】:
-
标准不限制最大可能的范围。它只是保证它的最小值。
-
@Zefick 这……很明显,我认为并没有回答这个问题。让我换个说法:N位有符号整数怎么可能比 {-2^(N-1); 更宽? +2^(N-1)}?
-
@Zefick 听起来您正在考虑该语言的早期版本。
-
@UKMonkey 期望什么?举个例子:我有 INT_MAX = 2 ^ 42 和 32 位 int。是否符合标准?如果是——怎么可能?
-
"符合标准吗?" C++ 20 之前是的。 “如果是——怎么可能?”可能不是;但标准不在乎。
标签: c++ standards bit theory signed