2014-10-08 87 views
0

我正在嘗試編寫一個簡單的mips程序,並且我堅持聲明一個32位有符號整數。以mips爲單位的32位有符號字

我已經寫了下面的簡單代碼:

.data 
max: .word 11111111111111111111111111111111 

我希望max的值是-1,但我的IDE告訴我這個數字被解釋爲-954437177。我正在使用MARS 4.4作爲我的IDE。

我在做什麼錯?我如何讓mips實際將該值識別爲-1?

+0

我不知道爲什麼它被解釋爲'-954437177',但我很確定'11111111111111111111111111111111'不會被解釋爲二進制數。爲什麼不嘗試'-1',因爲這就是你想要的? – 2014-10-08 22:00:03

+1

這是一個很大的十進制數,當它轉換爲二進制數並截斷爲32位時,它是'-954437177'。 – Jester 2014-10-08 22:12:12

+0

我正在寫這個作業,並且這個任務說:「使用一個循環編寫一個MIPS程序,該循環計算內存中最多五個連續(32位)字(將這些字視爲二進制補碼整數)並存儲產生一個標爲max的詞。「出於這個原因,我試圖編寫32位二進制值。有沒有辦法做到這一點?我的理解錯誤嗎? @Jester – Lesha 2014-10-08 22:18:18

回答

1

.word將數字轉換爲十進制數,並且在轉換它時,因爲它的32位,所以只會得到最後的32位。 11111111111111111111111111111111(10)= 10001100001111011110111110110001111011011011100110000100111111100010101011000111000111000111000111000111(2)

最後32位:11000111000111000111000111000111(2)= -954437177 如果你想存儲-1爲32位,儘量 .word爲0xFFFFFFFF具有的價值-1

+0

執行.word 0xFFFFFFFF還是.word -1有區別嗎? – Lesha 2014-10-08 22:30:07

+0

說實話我不知道是否允許「 - 」在那裏,你可以試試。 – 2014-10-08 22:31:29

+0

它似乎編譯好,不給我任何錯誤。 mips會正確解釋此值,還是使用十六進制表示更好? – Lesha 2014-10-08 22:32:46

相關問題