Ho bisogno di scrivere una logica per determinare, dato un numero pari. La più alta potenza di due che la divide in modo uniforme. Qual è il valore massimo di 2^n dove Input% 2^n == 0?Calcolo dell'alta potenza di 2 che divide uniformemente un numero in C
IE:
Input -> Output
4 (0100) -> 4
8 (1000) -> 8
12 (1100) -> 4
14 (1110) -> 2
24 (11000) -> 8
etc....
sembra che ci sia una certa logica bit a bit che può funzionare out: quando si guarda l'ingresso in binario, il più a destra di un bit sembra essere una soluzione. Come posso determinare questo valore in C? C'è un'altra soluzione che potrebbe essere più semplice?
grazie- Jonathan
X = 24 (24^23) = 24623 24623 >> 1 = 12311 12311 + 1 = 12312 Ti ho calcolare qualcosa che non va? –
Jonathan: '^' è XOR, quindi '(24^23)' è 15. – caf
BTW, se x non è firmato, credo che l'unico caso limite che richiede una gestione speciale sia zero. – caf