【问题标题】:LC3 Bit CounterLC3 位计数器
【发布时间】:2015-05-01 12:40:06
【问题描述】:

我试图弄清楚如何在 LC3 汇编语言中实现位计数器。例如:输入“00001100001000001”输出“000000000000100” 我将计算位串中的个数并以二进制输出该数字。我知道如何一次给定一位,但我不知道如何一次只分析 16 位字符串的一位。 谢谢。

【问题讨论】:

标签: bit lc3 bitcount


【解决方案1】:

有几种不同的方法可以计算存储在 LC3 中的值的位数。

  • 您可以使用位移并计算末端“脱落”的位
  • 您可以使用位掩码来检查值中的每个位
  • 我敢肯定还有其他方法,但效率不高

就我个人而言,我会使用位掩码方法,因为它快速且高效,而且我不必担心我的代码会陷入困境。

位掩码如下所示:

B_MASK  .FILL   b1000000000000000
        .FILL   b0100000000000000
        .FILL   b0010000000000000
        .FILL   b0001000000000000
        .FILL   b0000100000000000
        .FILL   b0000010000000000
        .FILL   b0000001000000000
        .FILL   b0000000100000000
        .FILL   b0000000010000000
        .FILL   b0000000001000000
        .FILL   b0000000000100000
        .FILL   b0000000000010000
        .FILL   b0000000000001000
        .FILL   b0000000000000100
        .FILL   b0000000000000010
        .FILL   b0000000000000001

现在您所要做的就是创建一个循环,将这些掩码值中的每一个与您的存储值进行“与”运算。如果在 AND 之后得到一个正数,那么您只需将 1 添加到您的位计数器,然后对每个剩余的掩码值重复该过程。

【讨论】:

  • 非常感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2015-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-13
  • 2012-04-22
  • 1970-01-01
相关资源
最近更新 更多