Условное выражение с использованием побитовых операторов

Итак, я вижу, что этот вопрос уже задавался, однако ответы были немного расплывчатыми и бесполезный. Хорошо, мне нужно реализовать выражение c, используя только "& ^ ~! + | >> <<"

Выражение должно напоминать:a ? b :c

Итак, из того, что я смог сказать, выражение должно выглядеть примерно так:

return (a & b) | (~a & c)

Это работает, когда a = 0, потому что сложение его с b даст ноль, а затем или выражение вернет правую часть, (~a & c)что работает, потому что ~0 дает все единицы, а объединение c со всеми единицами возвращает c.

Однако это не работает, когда a > 0. Может ли кто-нибудь объяснить, почему это так или как это исправить?

11
задан David Heffernan 5 April 2012 в 19:05
поделиться