/ / C À l'aide d'opérateurs au niveau des bits, indiquez si le nombre binaire a tous les événements définis sur 0 [dupliquer] - c, logique, manipulation de bits

C L'utilisation d'opérateurs au niveau du bit indique si le nombre binaire est défini sur 0 (dupliquer) - c, logique, manipulation de bits

Duplication possible:
Recherchez si chaque bit pair est défini sur 0 à l'aide d'opérateurs au niveau du bit

L’autre exemple n’a pas vraiment répondu à ma question, alors voici la situation:

Je dois renvoyer 1 si tous les niveaux de la séquence de bits sont mis à 0 et renvoyer 0 sinon. -Je ne peux pas utiliser d'instructions conditionnelles!

J'ai donc un numéro 0x7f (01111111)

Je peux et par un masque de 0xAA (10101010)

ça me donne: 00101010

Je n'ai besoin que de faire un 0 ou un 1 donc je !! (00101010) et cela me donnera la valeur booléenne, mais le résultat est 1, mais j'ai besoin d'un 0 pour pouvoir l'annuler ou utiliser un masque différent.

Je continue à tourner en rond avec ceci et sa conduite qui me rend folle, aidez-moi et ne vous souvenez d'aucune déclaration conditionnelle, juste de ces opérateurs:

! ~ & ^ | + << >>

Réponses:

0 pour la réponse № 1

Est-ce que je manque quelque chose? Vous recevez 00101010 en conséquence, tous les événements ne sont donc pas 0. Dans ce cas, vous devez retourner 0, mais vous !! (deux fois nier) le résultat. Pourquoi ça? La valeur non nulle est annulée en faux, qui est ensuite annulée en vrai, ce qui donne 1 ... Exactement le contraire de ce dont vous avez besoin ...

Inversement: avec 0x15 (00010101), tous les événements sont 0, AND avec 0xAA donne 0, négatif donne vrai, encore une fois négatif donne faux, le résultat est 0 ...


0 pour la réponse № 2

(~ (2 ^ 1 & yournumber)) & (~ (2 ^ 3 & yournumber)),etc tout en bas fonctionnerait. Je ne sais pas si c'est le moyen le plus rapide (~ (2 ^ 1 et votre numéro)) & (~ (2 ^ 3 & votre nombre)), etc. Vous ne savez pas si c'est le moyen le plus rapide - et vous pourriez créer une fonction pour la parcourir et la faire fonctionner avec un nombre de bits configurable.