移位运算
#include<iostream> #include<stdio.h> using namespace std; int main(void) { unsigned long long a = (1<<32)-1; long long b = (1<<31)-1; long long c = (1<<31); cout << a<<endl; cout << b << endl; cout << c << endl; return 0; }
因为long long 和 unsigned都是使用4个字节存储,因此long long 范围是[-2^31,2^31-1]
unsigned long long 范围是[0,2^32-1]
需要注意的是,他们是使用补码保存在内存中的。对于一个整数的补码而言,他的最大值加一之后变成他的最小值。