2014-10-08 48 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

相关问题