如何检查一个数是否是一个64位整数

问题描述:

我在MIPS中做递归斐波那契分配,并在我的mac上用qtSpim模拟并使其工作。但是,我的老师想要一种方法来检查fib函数中的整数n是否过大,如果是这样,“输出的数字太大”。有关我如何去做这件事的任何提示?如何检查一个数是否是一个64位整数

+0

我的猜测是,你的老师希望你写一个处理溢出陷阱。 – dasblinkenlight 2012-03-21 21:02:35

我对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),那么你知道新号码过大,出现溢出。