Rust具有128位整数,这些整数用数据类型表示i128(u128对于无符号整数):
let a: i128 = 170141183460469231731687303715884105727;
Run Code Online (Sandbox Code Playgroud)
Rust如何使这些i128值在64位系统上工作?例如,如何对这些进行算术运算?
据我所知,既然该值不能容纳在x86-64 CPU的一个寄存器中,那么编译器是否会以某种方式使用2个寄存器i128?还是他们改用某种大整数结构来表示它们?
我刚刚在我的32位机器上尝试了MSVC 2010中的一些东西,发现我可以在我的程序中使用__int64 - 这实际上有效!
如果32位处理器的长度确实只有32位,那么数学运算如何处理64位数?例如:
long lngTemp1 = 123456789123;
long lngTemp2 = lngTemp1 * 123;
Run Code Online (Sandbox Code Playgroud)
根据MSDN,C#中有一个长期签名的64位数字:http://msdn.microsoft.com/en-us/library/ctetwysk(VS.71).aspx
32位英特尔微处理器如何能够执行代码,如上所述而不会出现溢出?
bigint ×1
c# ×1
c++ ×1
int128 ×1
llvm-codegen ×1
long-integer ×1
overflow ×1
rust ×1
types ×1
x86-64 ×1