【问题标题】:How to do bitwise ANDING in c using just ~ and |如何仅使用 ~ 和 | 在 c 中进行按位与运算
【发布时间】:2013-05-05 20:46:41
【问题描述】:

我只需要使用~| 来创建一个函数, 这样函数f(6, 5) 将返回4 作为答案。

【问题讨论】:

  • 谷歌的摩根法律
  • 德摩根定律
  • 是的,刚刚明白了,谢谢!!
  • 致那些因“过于本地化”而投票结束的人:我不明白这不是一般的编程问题。

标签: c bit-manipulation bitwise-operators bitwise-and


【解决方案1】:

根据德摩根定律,~(a | b) 等于 ~a & ~b。同理,a & b 等于 ~(~a | ~b)

【讨论】:

    【解决方案2】:

    ~(~a|~b)

    解读:

    ~a : a 中为 0 的位

    ~b : b 中为 0 的位

    ~a|~b:a 或 b 中为 0 的位

    ~ of ~a|~b:a 或 b 中都不为 0 的位,即两者都为 1

    【讨论】:

      【解决方案3】:
      int f(int a, int b)
      {
          return ~(~a|~b);
      }
      

      De Morgan's Theorem

      【讨论】:

        【解决方案4】:

        查看

        http://en.wikipedia.org/wiki/De_Morgan%27s_laws

        所以下面一行将帮助您使用否定和按位或来实现加法

        ~(~a | ~b)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-07-31
          • 2020-09-15
          • 2018-01-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多