Faire un don ! | | style | statistiques | contactez-nous | plan | lettre d'information

Liens connexes

Dépêche modérée par

Dépêche éditée par

Code : La quintessence des algorithmes bit à bit

Posté par Ontologia (page perso, ). Modéré le 07 septembre 2006.
Technologie
Jouer avec les bits lorsqu'on code est souvent un bonheur intense tant les possibilités sont larges malgré les axiomes 8/16/32/64 bits dont on dispose sur les processeurs (et donc) dans les langages.

De nombreux "grands maîtres", dont Brian Kernighan lui-même ont écrit de nombreux algorithmes utilitaires effectuant des travaux sur les champs de bits que sont nos mots mémoires.

On trouvera donc dans l'article cité, qui des comptage de bit (à 1 ou 0), des tests de parités parallélisables, des rotations de bits, des modulos, des log base 2 (et donc des log base n). L'article prévient en introduction que les problèmes de cache, bande passante mémoire doivent être pris en compte dans l'utilisation de l'algorithme sur l'architecture libre.

Un bien beau texte.

NdM : les extraits de code sont du domaine public d'après l'introduction du document.

> Lire la dépêche (45 commentaires, moyenne: 3,3).  

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.

bonheur

Posté par Troy McClure (page perso, ) le 07/09/2006 à 14:41. (lien). Évalué à 10.

> Jouer avec les bits est souvent un bonheur intense tant les possibilités sont larges

Les big-endian procurent encore plus de plaisir !

Merci

Posté par jjl (page perso, ) le 07/09/2006 à 15:31. (lien). Évalué à 9.

de m'avoir fait découvrir cette page ! Quand je vois la différence entre ces algos et ceux que j'ai pondu, je vais sans doute y retourner souvent.

Un gros problème quand on travaille dans l'industrie (au sens general) c'est qu'on a pas le temps de chercher d'aussi beaux algos. AMHA on perd du même coup un interet majeur de notre travail :(

[+] la quintessence ca n'a pas de sense

Posté par micka75014 () le 07/09/2006 à 20:43. (lien). Évalué à -10.

Alors, voila j'ai voulu tester du code bit à bit sur le link

Ouhaa, le typade est plus rapide ici que sous wordpress.

Je me marre, le gars de lafraise fait du zele sur ces 2 millions euros
Il aurait pas du vendre non il aurait gagner plus sur 10 ans non ?
il aurait du ce faire acheter chez google LOL

pff la vie tranquille, une maison n'importe na oke tous çà.
des enfants en plus

moi si ma mashup grimpe en bourse je vais direct vivre a moutain view
ou à SF ou a NY.

pour dire y a des paysans parmit les geek mais qui sait il rebondira
peut être

a oui j'aime pas trop les t-shirt c'est moche
le lapin de la ratp qui ce coince les doigts dans la porte ...

revenons a mes moutons,
j'ai voulu essayer le code j'ai ajouter un fonction main()
est les includes

#include <stdio.h>
#include <stdlib.h>

int main()

static const char LogTable256[] =
{
0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
};

gcc algo3.c -o algo3

/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/../../../crt1.o: dans la fonction « _start »:
: référence indéfinie vers « main »
collect2: ld a retourné 1 code d'état d'exécution

comme je trouve pas de réponse pértinante dans google PR
si vous s'avez d'ou viens l'erreur, merci.

ps: les fautes ... j'accepte toute donnation de beschrelle, larousse,

Encore un coup des brevets

Posté par Bench () le 07/09/2006 à 23:07. (lien). Évalué à 10.

au sujet de la technique pour obtenir la valeur absolue :


int v; // we want to find the absolute value of v
int r; // the result goes here

r = (v ^ (v >> (sizeof(int) * CHAR_BIT - 1))) - (v >> (sizeof(int) * CHAR_BIT - 1));

Il est dit que :
Unfortunately, this method has been patented in the USA on June 6, 2000 by Vladimir Yu Volkonsky and assigned to Sun Microsystems

Heureusement peu après des liens sont donnés pour prouver que le brevet est invalide!
C'est dingue de breveter des techniques pareilles... je comprendrais jamais... heureusement que D.Knuth a ecrit ses bouquins sur l'art de la programmation, sinon on pourrai jamais utiliser de maths en informatique!

Bravo mais..

Posté par dbaelde (page perso, ) le 07/09/2006 à 23:42. (lien). Évalué à 3.

Je suis agréablement surpris par ce post, c'est rare que les amoureux de la programmation soient visés -- mais peut-être que je cherche pas au bon endroit pour ça.

Je me demande quand même combien de gens ont besoin d'écrire des algos bit à bit en C.. j'ai passé un certain nombre d'années à coder en C, ça m'est arrivé très rarement. Il y a des gens qui ne peuvent pas utiliser la libm pour le log ou la valeur absolue ?

Revenir en haut de page