/ / C El uso de operadores bit a bit indica si el número binario tiene todos los nodos establecidos en 0 [duplicado] - c, lógica, manipulación de bits

C El uso de operadores bit a bit indica si el número binario tiene todos los efectos establecidos en 0 [duplicado] - c, lógica, manipulación de bits

Posible duplicado:
Encuentre si cada bit par se establece en 0 usando operadores bitwise

El otro ejemplo no respondió mi pregunta, así que aquí está la situación:

Necesito devolver 1 si todos los nivelaciones en la secuencia de bits se establecen en 0 y devuelven 0 en caso contrario. -¡No puedo usar sentencias condicionales!

Así que tengo un número 0x7f (01111111)

Puedo y por una máscara de 0xAA (10101010)

que me da: 00101010

Necesito hacer solo un 0 o 1, así que !! (00101010) y eso me dará el valor booleano, pero devuelve un 1, pero necesito un 0, así que puedo negarlo o usar una máscara diferente.

Sigo caminando en círculos con esto y me está volviendo loco, por favor ayúdenos y recuerden que no hay declaraciones condicionales, solo estos operadores:

! ~ & ^ | + << >>

Respuestas

0 para la respuesta № 1

¿Me estoy perdiendo de algo? Usted obtiene 00101010 como resultado, no todos los factores son 0. En ese caso, debe devolver 0, pero !! (dos veces negar) el resultado. ¿Por qué eso? El valor distinto de cero se niega a falso, que luego se niega a verdadero, que es 1 ... Justo lo contrario de lo que necesita ...

De otra manera: con 0x15 (00010101), todos los indicadores son 0, Y con 0xAA da 0, negado da verdadero, nuevamente negado da falso, el resultado es 0 ...


0 para la respuesta № 2

(~ (2 ^ 1 y su número)) & (~ (2 ^ 3 y su número)),todo el camino hacia abajo funcionaría. Aunque no estoy seguro de si es la forma más rápida (~ (2 ^ 1 & yournumber)) & (~ (2 ^ 3 & yournumber)), etc. todo funcionaría. Sin embargo, no estoy seguro de que sea la forma más rápida, y podría hacer que una función recorra y haga que continúe para una cantidad configurable de bits.