From fc69b0242cc238cbd9017ce81c0d3f2258e0965e Mon Sep 17 00:00:00 2001 From: Hugo LAMY Date: Sun, 21 Apr 2019 13:34:51 +0200 Subject: [PATCH] fonction test_big_map fonctionne correctement --- test_big_map.c | 53 ++++++++++++++++++++++++++++++++------------------ 1 file changed, 34 insertions(+), 19 deletions(-) diff --git a/test_big_map.c b/test_big_map.c index 41b94b1..8e15877 100644 --- a/test_big_map.c +++ b/test_big_map.c @@ -2,40 +2,55 @@ void print_bits(int octet) { - int i; + unsigned int i; - i = 1 << 30; + i = 1 << 31; while (i) { (octet & i) ? printf("1") : printf("0"); i >>= 1; } - printf("\n"); } -void test(int map[]) -{ - int i; +/* +** cette fonction affiche un mask qui se decale le long d'un tableau d'int +** lancer avec gcc test_big_map.c puis ./a.out pour voir +*/ - i = 0; - print_bits(map[0]); - printf("\n"); - while (i <= 30) +void test(unsigned int map[]) +{ + int i; + int j; + int k; + int l; + unsigned int mask; + + mask = map[9]; + + i = -1; + j = 9; + while (j >= 0) { - print_bits(map[1]); - // print_bits(((1 << i) & map[0]) << (30 - i)); - map[1] = (map[1] >> 1) | (((1 << i) & map[0]) << (30 - i)); // cette ligne vient ajouter a la fin de map[1] le debut de map[0] - i++; // c'est brouillon mais ca permettrait de faire "tourner" sur une - } // seule petite map le contenu de la grande map divisee en tab de int + if (!(++i % 32) && j-- && (k = -1)) + { + while (++k < 10) + print_bits(map[k]); + printf("\n"); + } + l = 0; + while (l++ < 320 - 32 - i) + printf(" "); + print_bits(mask); + printf("\n"); + mask = (mask >> 1) | (((1 << (i % 32)) & map[j]) << (31 - (i % 32))); + } } int main() { - int map[10] = {456873153, 1687645681, 2, 3, 4, 5, 6, 7, 8, 9}; - int i = 0; + unsigned int map[10] = {1568713153, 817645681, 654186132, 538171355, 1718453135, 551286515, 1631843343, 3413834313, 1155555555, 999999999}; + int i = 0; - while (i < 10) - printf("%d\n", map[i++]); test(map); return (0); }