0

我的程序必须接受 0 到 2^32 或 4,294,967,295 之间的输入。

哪个按位 32 字节应该能够做到,但我溢出到负数,因为我不知道如何使它成为一个无符号整数。我看到我有可以通过算术执行的指令,但是如果我只想将它加载到寄存器中并打印呢?它现在总是打印出负数。

4

2 回答 2

1

int 是有符号还是无符号与它在寄存器中的存在方式无关。无论哪种方式,它都只是一个位序列。2^32 -1 = 0xFFFFFF。如果将其解释为无符号整数,则为 4,294,967,295 或 2^32-1。如果您使用二进制补码将其读取为有符号整数,则 0xFFFFFFFF 为 -1。我猜问题出在您的打印命令中。尝试将打印输出格式化为无符号。

于 2013-05-03T22:32:06.480 回答
1

http://courses.missouristate.edu/KenVollmar/mars/Help/SyscallHelp.html

尝试服务调用 36。这将打印一个无符号整数。

于 2016-09-29T03:05:05.037 回答