Wenn ich versuche, an unsigned Ganzzahlen in MIPS zu arbeiten, bleibt das Ergebnis jeder Operation, die ich mache signiert (das heißt, die Ganzzahlen sind alle in Zweierkomplement), obwohl jede Operation ich eine vorzeichenlose bin: addu
, multu
und so vierte ...Warum geben MIPS-Operationen für vorzeichenlose Nummern signierte Ergebnisse?
Wenn ich Zahlen im Bereich [2^31, 2^32 - 1]
drucke bekomme ich ihren "übergelaufenen" negativen Wert, als ob sie signiert waren (ich denke, sie sind).
Obwohl, wenn ich so etwas wie dies versuchen:
li $v0, 1
li $a0, 2147483648 # or any bigger number
syscall
die gedruckte Zahl ist immer 2147483647 (2^31 - 1)
Ich bin verwirrt ... Was bin ich?
PS: Ich habe meinen Code nicht enthalten, da er nicht gut lesbar ist (so ist der Assembler-Code) und dieses Problem beiseite zu legen, scheint gut zu funktionieren. Wenn jemand das Gefühl hat, dass es notwendig ist, werde ich es sofort einbeziehen!
Ich suchte überall im Netz nach einer Antwort ... überall außer dem Offensichtlichen. Vielen Dank! – dankilman
Warum verwenden sie dann die Terminologie "signed and unsigned" statt "checked and unchecked"? – dan04
Es ist eine falsche Bezeichnung. Lies das erste Zitat. –