0

私のプログラムは、0 から 2^32 または 4,294,967,295 の間の入力を受け入れる必要があります。

どのビット単位の 32 バイトができるはずですが、これを符号なし整数にする方法がわからないため、負の数にオーバーフローしています。算術演算で実行できる命令があることがわかりましたが、それをレジスタにロードして印刷したい場合はどうすればよいでしょうか? 現在、常に負の数が出力されます。

4

2 に答える 2

1

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

サービス コール 36 を試してください。unsigned int が出力されます。

于 2016-09-29T03:05:05.037 に答える
1

int が符号付きであるか符号なしであるかは、レジスタ内での存在方法には関係ありません。いずれにせよ、それは単なる一連のビットです。2^32 -1 = 0xFFFFFF。これを符号なし整数と解釈すると、4,294,967,295 または 2^32-1 になります。2 の補数を使用して符号付き整数として読み取ると、0xFFFFFFFF は -1 です。問題は印刷コマンドにあると思います。印刷出力を無署名としてフォーマットしてみてください。

于 2013-05-03T22:32:06.480 に答える