C++:数字与位?
C++: digits vs bits?
我试图理解 C++ 语言中数字和位之间使用的词汇的区别,如:
CHAR_BIT;
std::numeric_limits<char>::digits;
概念上有区别吗?也许对于奇怪的架构?
如果是这样,std::bitset
的 operator[]
的结果将被称为什么。它允许访问位还是数字?
而当前的 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
等于 8
而 digits
函数将 return 7
或 8
取决于 char
是否已签名。
我同意使用 "digits" 这个词在获取整数类型的位数时有点令人困惑,但对于浮点类型更有意义:
For floating-point types, this is the number of digits in the mantissa.
而std::bitset
是位的集合,所以索引运算符会给你集合中选择的位 .
我试图理解 C++ 语言中数字和位之间使用的词汇的区别,如:
CHAR_BIT;
std::numeric_limits<char>::digits;
概念上有区别吗?也许对于奇怪的架构?
如果是这样,std::bitset
的 operator[]
的结果将被称为什么。它允许访问位还是数字?
而当前的 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
等于 8
而 digits
函数将 return 7
或 8
取决于 char
是否已签名。
我同意使用 "digits" 这个词在获取整数类型的位数时有点令人困惑,但对于浮点类型更有意义:
For floating-point types, this is the number of digits in the mantissa.
而std::bitset
是位的集合,所以索引运算符会给你集合中选择的位 .