我的程序必须接受0到2 ^ 32或4,294,967,295之间的输入。
哪些按位的32字节应该可以做,但我已经溢出到负数,因为我不知道如何使这个无符号整数。我看到我有通过算术可以做到的指令,但是如果我只是想将它加载到寄存器并打印它呢?它现在总是打印出负数。
答案 0 :(得分:1)
int是有符号的还是无符号的,无论它在寄存器中的存在方式都无关紧要。无论哪种方式,它只是一个位序列。 2 ^ 32 -1 = 0xFFFFFF。如果将其解释为无符号整数,则为4,294,967,295或2 ^ 32-1。如果使用二进制补码将其读作有符号整数,则0xFFFFFFFF为-1。我猜这个问题出在你的打印命令中。尝试将打印输出格式化为无符号。
答案 1 :(得分:1)
http://courses.missouristate.edu/KenVollmar/mars/Help/SyscallHelp.html
尝试服务调用36.打印unsigned int。