【问题标题】:How to detect if a binary number has a 0 in Decimal如何检测二进制数是否在十进制中为0
【发布时间】:2013-09-12 05:45:57
【问题描述】:

我有一个二进制数,当我将它表示为十进制时,我需要知道该二进制数在数字中是否有 0

所以,我无法将它转换为字符串或类似的东西。

我需要某种方法将其视为二进制文件并从那里进行检测。

例如

10111100101 = 1509
101111001011 = 3019

我需要检测那些 0

谢谢!

【问题讨论】:

    标签: assembly binary nasm


    【解决方案1】:

    我知道的唯一方法是将数字部分转换为十进制,而不记住结果。像这样的:

    ; number is in eax
        mov  ecx, 10
    loop:
        cdq
        div  ecx
        test edx, edx
        jnz  loop
        test eax, eax
        jnz  zero_found
    
    ; zero not found
    
        ret
    
    zero_found:
    
        ret
    

    【讨论】:

    • 这里不需要动态除法,因为10是一个常数。
    • 什么是“动态除法”?
    • 只有在运行时才知道红利。相比之下,如果被除数是静态已知的,则可以乘以倒数,这样会更快。
    • 这个任务不需要更快。当然你可以提供更好的答案。 :)
    【解决方案2】:

    你能做到的最好方法是

    1. 将二进制数转换为十进制形式
    2. 通过计数器扫描其位为 0
    3. 如果找到零,则执行此操作,否则执行此操作...取决于您...

    可以很容易地为此设计适当的代码。 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-13
      • 2021-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-28
      • 2015-12-02
      相关资源
      最近更新 更多