Necesito escribir algo de lógica para determinar, dado un número par. El poder más alto de dos que lo divide equitativamente. ¿Cuál es el valor máximo de 2^n donde Entrada% 2^n == 0?Cálculo de la potencia máxima de 2 que divide uniformemente un número en C
IE:
de entrada -> Salida
4 (0100) -> 4
8 (1000) -> 8
12 (1100) -> 4
14 (1110) -> 2
24 (11000) -> 8
etc....
parece que haya alguna lógica bit a bit que pueden funcionar: cuando se mira en la entrada en el sistema binario, el bit de la derecha parece ser la solución. ¿Cómo determino este valor en C? ¿Hay alguna otra solución que pueda ser más fácil?
de Acción de Gracias Jonathan
X = 24 (24^23) = 24623 24623 >> 1 = 12311 12311 + 1 = 12312 ¿He calcular algo mal? –
Jonathan: '^' es XOR, de modo '(24^23)' es 15. – caf
Por cierto, si x es unsigned entonces creo que el único caso de borde que necesita un manejo especial es cero. – caf