La fonction reverse doit fonctionner mieux que la solution proposee precedemment. Tous les processeurs n'ont pas forcement d'instructions pour faire un decalage de plusieurs positions (a gauche ou a droite).
Par contre j'ai aucune idee des performances de la fonction reverse2, j'ai juste trouve que c'etait marrant.
unsigned char reverse (unsigned char x)
{
int i;
unsigned char r = 0;
for (i = 0; i < 8; i++) {
r = (r << 1) | (x & 1);
x >>= 1;
}
return(r);
}
unsigned char reverse2 (unsigned char x)
{
unsigned char rev[] = { 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10,
0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01 };
int i;
unsigned char r = 0;
for (i = 0; i < 16; i += 2) {
r |= rev[i + (x & 1)];
x >>= 1;
}
return(r);
}
main()
{
int i;
printf("reverse:\n");
for (i = 0; i < 8; i++) {
unsigned char x = 1 << i;
printf("%02x -> %02x\n", x, reverse(x));
}
printf("reverse2:\n");
for (i = 0; i < 8; i++) {
unsigned char x = 1 << i;
printf("%02x -> %02x\n", x, reverse2(x));
}
}
# Autres solutions
Posté par xoffox . En réponse au message Comment effectué une rotation de bit sur un Byte ?. Évalué à 1.
Par contre j'ai aucune idee des performances de la fonction reverse2, j'ai juste trouve que c'etait marrant.
unsigned char reverse (unsigned char x)
{
int i;
unsigned char r = 0;
for (i = 0; i < 8; i++) {
r = (r << 1) | (x & 1);
x >>= 1;
}
return(r);
}
unsigned char reverse2 (unsigned char x)
{
unsigned char rev[] = { 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10,
0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01 };
int i;
unsigned char r = 0;
for (i = 0; i < 16; i += 2) {
r |= rev[i + (x & 1)];
x >>= 1;
}
return(r);
}
main()
{
int i;
printf("reverse:\n");
for (i = 0; i < 8; i++) {
unsigned char x = 1 << i;
printf("%02x -> %02x\n", x, reverse(x));
}
printf("reverse2:\n");
for (i = 0; i < 8; i++) {
unsigned char x = 1 << i;
printf("%02x -> %02x\n", x, reverse2(x));
}
}
[^] # Re: Autocompletion sous (X)emacs
Posté par xoffox . En réponse au message [Éditeur/Emacs] Autocompletion sous (X)emacs. Évalué à 1.
Pour la xref et les recherches j'utilise le vieillisant SourceNavigator ( http://sourcenav.sourceforge.net/(...) ). Pour l'instant j'ai rien trouver de plus efficace.
[^] # Re: Perl non, sed oui!
Posté par xoffox . En réponse au message [Editeur] Changer. Évalué à 1.
# CTRL-D == EOF
Posté par xoffox . En réponse au message [Terminal] se déloguer rapide. Évalué à 2.
EOF il se termine parce qu'il interprète ça comme la fermeture du
canal d'entrée.
On peut modifier ce comportement en changean la variable IGNOREEOF
(valable pour bash et sh).
Dernier détail. Quand le bash se termine, il execute les commandes
contenues dans .bash_logout.
Si mes souvenirs sont bons, pour csh c'est .logout