首页 文章

MIPS 32位随机整数

提问于
浏览
0

我试图让MIPS生成32位随机整数 . 我正在尝试使用以下代码,但在运行程序时出现错误 .

addi $v0, $zero, 42
li $a1, 4294967295 #32 bit number
syscall

我正在使用MARS模拟器 . 程序组装没有任何错误 . 执行上述系统调用时出现问题 . 我真的很感激任何帮助 .

1 回答

  • 2

    我认为问题在于您提供的最大数量( 0xffffffff ) . 尝试使用(带符号)最大正值( 0x7fffffff

    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
    

相关问题