【问题标题】:mod(x,y) works for unsigned integers, but not for signed integers in nand2tetris. What changes should I make?mod(x,y) 适用于无符号整数,但不适用于 nand2tetris 中的有符号整数。我应该做出哪些改变?
【发布时间】:2020-12-17 23:33:54
【问题描述】:
    @R2
    M=0
    @R0
    D=M
    @END
    D, JEQ
    @store
    M=D 
(LOOP)
    @R1
    D=D-M
    @REMAINDER
    D, JLT
    @EVENLY
    D, JEQ
    @LOOP
    0, JMP
(REMAINDER)
    @R1
    D=D+M
    @R2
    M=D
(EVENLY)
    @store
    D=M
    @R0
    M=D
(END)
    @END
    0, JMP

【问题讨论】:

    标签: assembly unsigned-integer mod nand2tetris signed-integer


    【解决方案1】:

    您应该确定当前代码工作和失败的条件。它是否要求两个操作数都是正数,还是只有相同的符号?

    一旦你这样做了,你也知道它失败的条件。然后,您可以检查这些,并在这些条件下执行不同的代码,或者修改操作数以使当前代码工作并生成正确的结果。

    为了帮助您入门,这里有一些模数应该返回的示例。祝你好运!

    Python 3.8.1 (default, Jan 15 2020, 18:56:16) 
    [Clang 11.0.0 (clang-1100.0.33.17)] on darwin
    Type "help", "copyright", "credits" or "license" for more information.
    >>> 3 % 2
    1
    >>> 3 % -2
    -1
    >>> -3 % -2
    -1
    >>> -3 % 2
    1
    >>> 5 % 3
    2
    >>> 5 % -3
    -1
    >>> -5 % 3
    1
    >>> -5 % -3
    -2
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多