~ &^| + << >>
son las únicas operaciones que puedo utilizarnegación lógica con sólo operadores de bits (excepto!)
Antes de continuar, esta es una pregunta tarea, he estado atrapado en esto durante un tiempo muy largo.
Mi enfoque original: pensé que! X se podía hacer con el complemento de dos y hacer algo con su inversión aditiva. Sé que probablemente haya un xor aquí, pero realmente no sé cómo abordar esto.
Para el registro: También no puedo usar condicionales, bucles, ==
, etc., solo las funciones (bitwise) que mencioné anteriormente.
Por ejemplo:
!0 = 1
!1 = 0
!anything besides 0 = 0
Está seguro de querer que ellos evalúen directamente a 1 y 0, o simplemente lógico verdadero y falso? es decir, ¿es '~ 0' aceptable como verdadero lógico? –
Nota: '+' no es un operador bit a bit. –
Este tipo de ejercicio no tiene sentido porque cualquier * uso * del resultado requiere un condicional que es esencialmente una comparación contra cero. Mi respuesta sería 'if (var); else {/ * su código aquí * /} ' –