Vin*_*ent 20 c++ standards unsigned language-lawyer c++11
为了T
使std::is_integral<T>::value && std::is_unsigned<T>::value
IS true
,不C++标准保证:
std::numeric_limits<T>::max() == 2^(std::numeric_limits<T>::digits)-1
Run Code Online (Sandbox Code Playgroud)
在数学意义上?我正在寻找基于标准引用的证据.
Tar*_*ama 15
我相信这是暗示的[basic.fundamental]/4
(N3337):
声明的无符号整数
unsigned
应遵守算术模数的定律,2^n
其中n
是该特定整数大小的值表示中的位数.
Ker*_* SB 15
C++通过引用C标准来指定整数类型的范围.C标准说:
对于除了以外的无符号整数类型
unsigned char
,对象表示的位应分为两组:值位和填充位(不需要后者中的任何一个).如果有N个值位,则每个位应表示1到2 N -1之间的2的不同幂,因此该类型的对象应能够使用纯二进制表示来表示0到2 N -1的值; 这应该被称为价值表示.任何填充位的值都未指定.
而且,C++需要:
无符号整数应遵守算术模2 n的定律,其中n是该特定整数大小的值表示中的位数.
综上所述,我们发现无符号整数类型具有n个值位,表示[0,2 n ] 范围内的值,并遵守算术模2 n的定律.
归档时间: |
|
查看次数: |
966 次 |
最近记录: |