P1236R1:为什么c ++标准试图在定义整数时偏离"bit"这个词?

san*_*orn 13 c++ language-lawyer c++20

根据P1236R1,现在整数类型用数字定义,不再用位.

type    minimum range exponent N
signed char     8
short          16
int            16
long           32
long long      64
Run Code Online (Sandbox Code Playgroud)

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

为什么?
为什么不依靠"bit"这个词更好?
这个提案中有哪些"不可观察的位"?

P1236R1是C++ 20的一部分

Flo*_*mer 13

根据ISO规则,ISO C++委员会的审议是私密的,不能与整个编程社区共享.该委员会发布了有关此事的以下信息(问题1857):

2014年6月会议记录:

CWG决定重新制定操作本身的描述,以避免引用比特,将定义"比特"等更大的问题分开以发布1943以供进一步考虑.

问题1861包含类似的语言.

我不存在本次会议,但具有已经在定义的ISO/IEC 2382(这是C++标准的规范参考):

二进制数字

在二进制系统中使用时,数字0或1中的任何一个

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