首页 > 解决方案 > P1236R1:为什么 c++ 标准在定义整数时试图远离“位”这个词?

问题描述

根据P1236R1,现在整数类型是用数字定义的,而不是用位定义的。

type    minimum range exponent N
signed char     8
short          16
int            16
long           32
long long      64

C++ 没有定义标准仍然缺乏的“位”的含义,而是选择不这样做,而是在术语中定义这些类型range exponent

为什么?
为什么最好不要依赖“位”这个词?
该提案中的“不可观察位”是什么?

P1236R1 是C++20 的一部分

标签: c++language-lawyerc++20

解决方案


根据 ISO 规则,ISO C++ 委员会的审议是私人的,不能与整个编程社区共享。委员会已就此事发布了以下信息(第 1857 期):

2014 年 6 月会议记录:

CWG 决定重新制定对操作本身的描述以避免提及位,将定义“位”等更大的问题拆分到 1943 年以供进一步考虑。

问题 1861包含类似的语言。

我没有出席这次会议,但bit已经在ISO/IEC 2382(这是 C++ 标准的规范性参考)中有一个定义:

少量

二进制数字

在二进制系统中使用数字 0 或 1

这个定义显然不适合 C++ 标准中的许多潜在用途,例如谈论符号位(表示类型/字中特定位置的位)或整数类型的宽度(以位为单位) 。


推荐阅读