Instruction conditionnelle en utilisant des opérateurs au niveau du Bit

Donc, je vois que cette question a déjà été posée, cependant les réponses ont été un peu vague et inutile. Ok, j'ai besoin de mettre en œuvre une c une expression en utilisant uniquement des "& ^ ~ ! + | >> <<"

L'expression doit ressembler à:? b : c

Donc, de ce que j'ai pu dire, l'expression des besoins à ressembler à quelque chose comme:

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

Cela fonctionne lorsque a = 0, car anding avec b donnera à zéro, puis la ou l'expression sera de retour le côté droit, (~a & c) qui fonctionne parce que ~0 donne à tous ceux, et anding c avec tous ceux retourne c.

Toutefois, cela ne fonctionne pas lors d'un > 0. Quelqu'un peut-il essayer d'expliquer pourquoi il en est, ou comment résoudre le problème?

OriginalL'auteur atb | 2012-04-05