Conditional Statement using Bitwise operators

后端 未结 2 975
春和景丽
春和景丽 2021-02-04 11:31

So I see that this question has already been asked, however the answers were a little vague and unhelpful. Okay, I need to implement a c expression using only \"& ^ ~ ! + |

相关标签:
2条回答
  • 2021-02-04 12:14

    I would convert a to a boolean using !!a, to get 0 or 1. x = !!a.

    Then I'd negate that in two's complement. Since you don't have unary minus available, you use the definition of 2's complement negation: invert the bits, then add one: y = ~x + 1. That will give either all bits clear, or all bits set.

    Then I'd and that directly with one variable y & b, its inverse with the other: ~y & c. That will give a 0 for one of the expressions, and the original variable for the other. When we or those together, the zero will have no effect, so we'll get the original variable, unchanged.

    0 讨论(0)
  • 2021-02-04 12:21

    In other words, you need a to have all bits set to 0, if a is false (i.e. 0), and have all bits set to 1, if a is true (i.e. a > 0).

    For the former case, the work is already done for you; for the latter -- try to work out result of the expression ~!1.

    0 讨论(0)
提交回复
热议问题