【问题标题】:Bitwise operators: Printing the numbers 1 to 100 using bit manipulation [closed]位运算符:使用位操作打印数字 1 到 100 [关闭]
【发布时间】:2015-10-25 06:14:18
【问题描述】:

我相信可以使用按位运算或位操作来生成数字 1 到 100,而不是通过传统的增量指令。

有哪些可能的方法?

【问题讨论】:

  • 你的问题没有意义。为什么要使用按位运算符打印 1 到 100 之间的数字?
  • 没有任何意义?我不这么认为。
  • @KlasLindbäck 没有实际用途。没有理智的人会使用位运算符来做这么简单的事情。这样做的目的是查看此人是否了解位运算符以及它们的作用。这很可能是某种面试问题。
  • 我认为这是一个有趣的问题。
  • “我相信这是可能的......”然后是“给我发你的 codez”。我可以说“我相信可以预测明天的彩票号码”并要求列出所有方法吗? (我会很高兴只有 一个 有效。)

标签: c algorithm bit-manipulation


【解决方案1】:

我相信有几种方法可以实现它。其中之一是使用tilde 运算符~x,它是按位补码,等于-(x+1)

int increase(int x){
   return (-(~x));
}

所以用上面提到的函数增加值并打印出来。

除了我自己的答案,我还找到了make an addition with bitwise operators的另一种方式。

int Add(int x, int y)
{
    if (y == 0)
        return x;
    else
        return Add( x ^ y, (x & y) << 1);
}

只需将 y 替换为 1 即可获得另一种递增值的方法。

【讨论】:

  • 有些人可能会反对你为他们做明显的家庭作业
  • @MattMcNabb 这是有道理的。没想到。
  • @SalvadorDali 绝招。谢谢大佬,我学到了很多。
猜你喜欢
  • 1970-01-01
  • 2016-04-01
  • 1970-01-01
  • 2015-10-30
  • 1970-01-01
  • 2015-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多