C++:数字与位?

C++: digits vs bits?

我试图理解 C++ 语言中数字和位之间使用的词汇的区别,如:

CHAR_BIT;
std::numeric_limits<char>::digits;

概念上有区别吗?也许对于奇怪的架构? 如果是这样,std::bitsetoperator[] 的结果将被称为什么。它允许访问位还是数字?

而当前的 boost 文档没有帮助:cppint 提供了带有 Digits 的代码,但文档提到了 Bits(这显然是文档的问题,但我不知道是文字更新还是代码更新。)

来自 this std::numeric_limits::digits reference:

The value of std::numeric_limits::digits is the number of digits in base-radix that can be represented by the type T without change. For integer types, this is the number of bits not counting the sign bit.

后来它指出 char 结果是 CHAR_BIT - std::numeric_limits<char>::is_signed

并且来自 C numeric limits reference

CHAR_BIT number of bits in byte

所以对于普通的现代计算机来说,char 是八位,那么 CHAR_BITS 等于 8digits 函数将 return 78 取决于 char 是否已签名。

我同意使用 "digits" 这个词在获取整数类型的位数时有点令人困惑,但对于浮点类型更有意义:

For floating-point types, this is the number of digits in the mantissa.


std::bitset的集合,所以索引运算符会给你集合中选择的 .