📜  64位无符号整数C++(1)

📅  最后修改于: 2023-12-03 14:38:53.320000             🧑  作者: Mango

64位无符号整数C++介绍

什么是64位无符号整数?

64位无符号整数指的是一个由64位二进制数字组成的无符号整数,其范围从0到2^64-1。因此,它可以表示的最大值是18446744073709551615,我们可以使用它来表示需要比较大的整数值。

C++中如何表示64位无符号整数?

在C++中,我们可以使用unsigned long long类型来表示64位无符号整数。

unsigned long long num = 18446744073709551615ULL;

当我们使用unsigned long long类型时,需要在后面跟上“ULL”以明确指示它是一个无符号长整型。需要注意的是,当我们使用一个常量表示64位无符号整数时,需要在后面跟上“ULL”或“ull”以避免出错。

C++中如何进行64位无符号整数运算?

在C++中,我们可以使用和其他整数类型相同的运算符来操作无符号长整型,例如+,-,*,/等。下面是一些64位无符号整数的运算示例。

unsigned long long a = 10000000000000000000ULL;
unsigned long long b = 9999999999999999999ULL;

unsigned long long c = a + b;
unsigned long long d = a - b;
unsigned long long e = a * b;
unsigned long long f = a / b;

可以通过如下的代码块将其输出:

cout << "c = " << c << endl;
cout << "d = " << d << endl;
cout << "e = " << e << endl;
cout << "f = " << f << endl;
C++中的常见错误

在使用64位无符号整数时,会有一些常见的错误。以下是一些例子。

忘记添加“ULL”后缀

当我们在将一个常量赋值给无符号长整型时,我们需要在常量后面添加“ULL”后缀。如果没有添加,我们可能会得到错误的结果。例如,下面这个例子,将会出现一个编译错误。

unsigned long long num = 12345678901234567890; //错误,需要添加“ULL”后缀
溢出

由于无符号整数范围的限制,当我们进行大于或等于2的64次方的计算时,我们可能会遇到溢出的问题。例如,下面这个例子可能会产生一个错误的结果。

unsigned long long a = 18446744073709551612ULL;
unsigned long long b = 4;
unsigned long long c = a + b; //错误:溢出
结论

64位无符号整数提供了一个能够表示非常大整数的方法,并且支持所有常见的整数操作。在使用时,需要注意添加后缀“ULL”和避免溢出。