#include #include #include long puissance_de_2(unsigned n) { long p2 = 1; for (int i = 0; i < n; i++) { p2 *= 2; } return p2; } /* Partie entière supérieure de log2(n) */ int ilog2(unsigned long n) { int l2 = 0; long p2 = 1; // 2^l2; while (p2 < n) { p2 *= 2; l2 ++; } return l2; } static void usage(char *nom_de_la_commande) { fprintf(stderr, "Usage: %s \n", nom_de_la_commande); } int main(int argc, char *argv[]) { if (argc != 2) { usage(argv[0]); return EXIT_FAILURE; } int n = atoi(argv[1]); for (int i = 0; i <= n; i++) { printf("%d\t%ld\t%d\t%d\n", i, puissance_de_2(i), ilog2(i), (int)ceil(log2(i))); } return EXIT_SUCCESS; }