Wie funktionieren 128-Bit-Integer i128 und u128 in Rust auf einem 64-Bit-System?
Hallo zusammen! Ich habe angefangen, Rust zu lernen, und bin auf einen interessanten Punkt gestoßen: Die Sprache hat eingebaute 128-Bit-Integer (`i128` und `u128`). Ich habe einen 64-Bit-Prozessor (AMD Ryzen), und ich verstehe nicht, wie ein Prozessor, der mit 64-Bit-Registern arbeitet, hardwaremäßig mit 128-Bit-Zahlen umgehen kann? Braucht man dafür nicht spezielle Unterstützung auf CPU-Ebene?
Ich habe einfachen Code geschrieben:
```rust
fn main() {
let a: i128 = 170141183460469231731687303715884105727;
let b: i128 = 1;
let c = a + b;
println!("Ergebnis: {}", c);
}
```
Der Code funktioniert, aber ich möchte verstehen:
1. Wie verarbeitet der Compiler solche Operationen? Emuliert er sie über mehrere 64-Bit-Instruktionen?
2. Gibt es einen Leistungsverlust im Vergleich zu `i64`?
3. Wann ist es sinnvoll, `i128` zu verwenden, und wann nicht?