用于确定有符号和无符号数据类型C++范围的公式

And*_*w B 12 c++ math

我刚刚开始使用C++(字面意思是我的第二天),并且我被分配来计算各种数据类型的范围,有符号和无符号.问题是,我的学校的工作方式我不会到数学部分,他教我们另外几个月的公式.他说要从那些已经完成数学课程的人那里得到这些信息,但他们都表示他们会在他们有笔记的家里从事这项工作.所以现在我和谷歌一起留在了黑暗中,而且它的答案是不确定的,所以我问你,堆栈溢出的聪明人.

获取数据类型范围的公式是什么?我发现一个有效但不适用于其他的INT,他希望我们计算的是:char,short,long和long long.他还想要那些4的无符号版本以及INT.

我们已经拥有每种数据类型的位和字节大小.

以下是我的INT范围布局:

    printf ("\nThe range of int is: %f\n", pow(2, (sizeof(int) * CHAR_BIT) -1));
Run Code Online (Sandbox Code Playgroud)

Tim*_*lds 22

std::numeric_limits<T>

您可以使用以下函数获取这些限制的实际值:

您可以用适当的类型代替T,例如signed charunsigned char.

公式

带有N位(使用二进制补码)的带符号数的公式是

  • min = -1*2 N - 1
  • max = 2 N - 1 - 1

带有N位的无符号数的公式是

  • min = 0
  • max = 2 N - 1

示例:8位 char

char具有N = 8位.让我们用signed char和验证这些公式unsigned char.

  • signed char
    • min = -1*2 N-1 = -1*2 7 = -128
    • max = 2 N - 1 - 1 = 2 7 - 1 = 127
  • unsigned char
    • min = 0
    • max = 2 N - 1 = 2 8 - 1 = 255