最小的unsigned int,它可以包含给定有符号整数的正值?

时间:2015-03-12 05:27:29

标签: c++ templates c++11 integral

可以在编译时确定可以包含给定有符号整数类型的正值的最小unsigned int吗?

所以最小的无符号整数类型足以容纳给定有符号整数类型的最大值。

1 个答案:

答案 0 :(得分:0)

一个好的起点是2是基数,我们需要考虑基于2的对数。一般规则:

  1. 如果无符号整数的字节数为sizeof n,则最大正数为(2 ^(8 * n)) - 1

  2. 如果有符号整数的字节数为sizeof,则最大正数为(2 ^(8 * n - 1)) - 1

  3. 因此,您需要确定给定类型的sizeof变量并查看它是否有符号。