我試圖讓MIPS生成32位隨機整數。我試圖使用下面的代碼,但是當我運行該程序時出現錯誤。MIPS 32位隨機整數
addi $v0, $zero, 42
li $a1, 4294967295 #32 bit number
syscall
我正在使用MARS模擬器。該程序彙編沒有任何錯誤。執行上面的系統調用時會發生問題。我會很感激任何幫助。
我試圖讓MIPS生成32位隨機整數。我試圖使用下面的代碼,但是當我運行該程序時出現錯誤。MIPS 32位隨機整數
addi $v0, $zero, 42
li $a1, 4294967295 #32 bit number
syscall
我正在使用MARS模擬器。該程序彙編沒有任何錯誤。執行上面的系統調用時會發生問題。我會很感激任何幫助。
我認爲問題在於您提供的最大數量(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
並且錯誤是...? – 2013-03-27 18:55:05
由於它使用Java的隨機數支持,它可能只支持有符號數。我會建議嘗試少於2^31的數字。 – Gabe 2013-03-27 19:00:37
@MarcB它說範圍的上限不能是負數。 – harbinger 2013-03-27 19:15:45