oui voila
Version imprimable
oui voila
Je viens de capter un truc ...
Pas besoins de manipulation bit a bit !
En realite, ton int vaut bin = 10010010010;
Le seul truc qui me derange c'est qu'un int est limité a 10 chiffre (-2 147 483 648 à 2 147 483 647).
Mais bon :
Ce code a été codé pour donner une base !Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 void InversionBit(int* bin) { /* Je copie le nombre binaire dans une chaine de caractere pour plus de facilité */ char copie[10]; copie[10] = sprintf (copie,"%d",(*bin)); int longueur = strlen(copie); /* J'inverse l'ordre grace a une classique permutation circulaire */ int i; for (i=0 ; i<longueur/2 ; i++) { char temp = copie[i]; copie[i] = copie[longueur - 1 - i]; copie[longueur - 1 - i] = temp; } /* Pour resoudre le probleme de precision, j'utilise un double temporaire */ double binTemp; for (i=0 ; i<longueur ; i++) if (copie[i] == '1') binTemp += pow(10.0,longueur-i-1); /* Finally ^^ */ (*bin) = (int)(binTemp); }
Il est certainement améliorable.
Voila, si tu as des questions, ppose les precisement stp :ccool:
Bon, dans ce cas, la première fonction que je t'ai donnée dans le deuxième message va très exactement faire ce que tu veux : un palindrome bit à bit d'un entier.
Mais un palindrome, c'est un axe de symetrie, non ? Comme pour le mot RADAR.
Je n'arrive pas a comprendre tout le fonctionnement de ton code.
Si je te donne un int qui a pour bit :
1010.
J'obtient quoi ? 0101 ou 10100101 ?
Vu que c'est sur 32 bits, ton nombre est donc "0000 0000 0000 0000 0000 0000 0000 1010". Ma fonction renverra donc "0101 0000 0000 0000 0000 0000 0000 0000".
Ce qu'il veut faire n' est pas de la manipulation bits à bits, c' est plutôt de la manipulation 4 bits à 4 bits.
Il peut décomposer son int en 4 char et ensuite inverser( d' abord dans le char) l' ordre des 4 char .
Du moins c' est se que j' ai compris.
Tu as raison, c'est moi qui est pensé a de la manipulation bit a bit. Cependant, on a deja clairement dis qu'il ne voulais pas inverser 4 à 4. Si tu regarde bien (l'exemple coloré un peu plus avant dans les post). Il veut lire de droite a gauche au lieu de gauche a droite.
De plus, il a deux code qui lui font ce qu'il veut.