【问题标题】:MIPS homework, factorial for large numberMIPS 作业,大数的阶乘
【发布时间】:2013-06-08 10:13:04
【问题描述】:

我必须编写计算大数(例如 200)的阶乘的程序。这对我来说非常重要。这是我的代码:

  .text
    main:
    li $v0, 4
    la $a0, prompt
    syscall

    li $v0, 5
    syscall
    move $s0, $v0
    move $t1, $v0
    li $t0, 1
    loop:
    mul $t0, $t0, $s0

    addi $s0, $s0, -1
    bgtz $s0, loop

    li $v0, 1
    move $a0, $t0
    syscall

    li $v0, 10
    syscall

    .data
    prompt: .asciiz "\nGive a number: "

这个程序只适用于小于 31 的数字。我不知道如何解决它。有人可以帮助我吗?

P.S 对不起,我的语言不好。

【问题讨论】:

  • 代码中的 petla 标签在哪里?
  • 还有符号整数的限制是 2,147,483,647 或 2^31 - 1。您实际上遇到了整数溢出。尝试使用 24 作为输入,它也应该输出负数。
  • 我知道,为什么大数字的结果不好,但我不知道如何解决它。你能解释一下你的最后一句话吗?
  • 任何值 n >= 13 的阶乘值都大于 32 位整数可以显示的值。

标签: mips factorial


【解决方案1】:

这个作业的重点是让学生在MIPS中实现任意精度的整数加法和乘法,然后用它来实现阶乘算法。 Here 是伪代码中任意精度阶乘的示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-17
    • 1970-01-01
    • 1970-01-01
    • 2020-05-29
    • 2016-01-04
    • 2014-03-24
    • 1970-01-01
    相关资源
    最近更新 更多