addi $v0, $zero, 42
li $a1, 0x7fffffff #32 bit number (maximum 32bit signed positive number)
syscall
根据OP注释,要获得32位数,您可以分两步执行:首先“掷硬币”以获得第32位,随机获得其他31位:
addi $v0, $zero, 42
move $a2, $zero
li $a1, 2
syscall
bnez $a0, skip
li $a2, 0x80000000
skip:
li $a1, 0x7fffffff #31 bit number (maximum 32bit signed positive number)
syscall
or $a0, $a0, $a2 # Here $a0 has a 32 bit number
1 回答
我认为问题在于您提供的最大数量(
0xffffffff
) . 尝试使用(带符号)最大正值(0x7fffffff
)根据OP注释,要获得32位数,您可以分两步执行:首先“掷硬币”以获得第32位,随机获得其他31位: