关于C/C++中的__int128
关于C/C++中的__int128
数据类型 | 占用空间(字节) | 取值范围 | 常见数据范围 |
---|---|---|---|
short | 2 | / | |
int | 4 | 1e9 | |
long | 4 | 1e9 | |
long long | 8 | 1e18 |
我们知道long long最大能表示到大约1e18这个数量级,但如果给的数据>=1e19呢?
__int128这个数据类型即可解决这个问题。
__int128是什么?
__int128是128位的整型,大概是1e38的范围。
__int128有什么用?
处理大数。
__int128怎么用?
__int128并不是所有的编译器都可以使用,但在Linux系统上是可以编译使用的。因为大部分比赛(蓝桥杯除外)和OJ的评测机都是建立在Linux上,所以做题的时候也可以用。
定义:
1 | __int128 a; |
输入输出不能使用cin/cout和scanf/printf,需要写一个按位输入输出的函数(快读快写)
输入函数:
1 | inline __int128 read() |
输出函数:
1 | inline void write(__int128 x) |
输入输出方法:
1 | a = read(); |
__int128类型与int类型一样可以进行算术运算。
在确定范围超过long long但不超过__int128时,用__int128可以极大的方便运算,但超过1e38时,还是需要打高精度板子。