如何检查一个数是否是一个64位整数
问题描述:
我在MIPS中做递归斐波那契分配,并在我的mac上用qtSpim模拟并使其工作。但是,我的老师想要一种方法来检查fib函数中的整数n是否过大,如果是这样,“输出的数字太大”。有关我如何去做这件事的任何提示?如何检查一个数是否是一个64位整数
答
我对MIPS指令集了解不多,但一般的汇编程序方法是在操作后检查进位标志。如果设置了,那么结果对于(无符号)算术来说太大了。
AFAIK,MIPS没有进位标志。但是,您可以近似一个如下:
addu $t3, $t2, $t1 # t3 = t2 + t1
sltu $t4, $t3, $t1 # t4 = 1 if carry occurred
答
F(n) = F(n - 1) + F(n - 2)
也:
F(n) > F(n - 1)
如果F(n) < F(n - 1)
,那么你知道新号码过大,出现溢出。
我的猜测是,你的老师希望你写一个处理溢出陷阱。 – dasblinkenlight 2012-03-21 21:02:35