首页 > 解决方案 > N位有符号整数的最大保证范围是多少?

问题描述

一些背景:

我试图找到 N 位有符号整数的最大范围的任何引号,但没有找到。

所以我想知道(就 C++ 而言):

  1. 假设 N 位有符号整数的最大可能范围限制在-2^(N-1)到是否正确+2^(N-1)?能不能更宽?
  2. 它会受到底层平台位实现的影响——比如“3-state-bit”或类似的东西吗?

标签: c++standardsbittheorysigned

解决方案


C++2a 虽然预计会成为 C++20 标准,但目前还没有。

除此之外,虽然当前草案对有符号整数强制执行二进制补码表示,但当前标准 (C++17) 和所有前身确实限制了选择
具体来说,提供的其他选项是有符号幅度表示二进制补码。两者都具有负零

有关于 N 位有符号整数范围的信息。具体来说,不是所有的对象表示的 N 1位都需要是值表示的 N 2位的一部分,窄字符类型除外。因此,值表示的 N 位宽度可能更小。考虑到鸽巢原理,它不能更大也就不足为奇了。

比特是二进制的假设深深地嵌入在语言中,就像它遍及许多其他编程语言一样。改变这将是一个重大项目。


推荐阅读