Page 1 sur 1

Représentation, hachage et somme

Posté : 16 déc. 2010, 22:57
par katagoto
Bonsoir à toutes à tous,

J'ai un tableau à deux dimensions de 0 et de 1 de taille variable (qui peut être assez grand) dont j'aimerais conserver toutes les versions (il peut y en avoir autant que de case). Je pensais, dans un premier temps le transformer en entier (ce qui m'aurais permis d'utiliser & et ~). Seulement PHP alloue dynamiquement ses entiers, ce qui est une bonne chose pour un développement "commun". Malgré un certains nombre de recherche je n'ai pas trouvé de moyen de soit ré-alloué un nombre précis de bits soit trouver un méthode de hachage permettant de faire des XOR équivalents au binaire.
Le soucis est de savoir si un schéma est faisable en fonction de quelques règles, je vais tenter une "brute-force".

Pour toutes vos idées,
Par avance,
Merci

Re: Représentation, hachage et somme

Posté : 17 déc. 2010, 07:55
par epommate2
>Seulement PHP alloue dynamiquement ses entiers

Qu'est ce que ca veux dire ?

Re: Représentation, hachage et somme

Posté : 17 déc. 2010, 08:10
par xTG
Je pense qu'il voulait dire que PHP s'occupe tout seul de l'allocation et que le programmeur n'a pas son mot à dire.
Si je comprend bien son soucis vient du fait qu'il ne peut avoir que des entiers, donc 32bits alors qu'il ne lui faut qu'un seul. Ce qui cause une surcharge de la mémoire de par l'énorme quantité de données qu'il a.
Quantité tout à fait négligeable si chaque nombre était codé sur un bit mais qui ne l'est pas actuellement.

Ai-je compris ?

Peut être peux-tu essayer lors de la création de l'array de passer par la fonction base_convert(), il ferra peut être une différence lors de l'allocation mémoire.

Re: Représentation, hachage et somme

Posté : 17 déc. 2010, 08:18
par epommate2
Mais...

Un tableau de bit == un entier

Non ?

Re: Représentation, hachage et somme

Posté : 17 déc. 2010, 08:27
par xTG
Euh... Seulement si tu as le même nombre de bits que de nombre de bits de codage dans un entier (32bits ou 64bits).
Dans tous les cas cela dépend de comment il a codé son système, pour ma part j'avais compris qu'il utilisait un truc de ce genre : array(1,0,1,0,0,0,1)
Vu qu'il parle d'un tableau à plusieurs dimensions, c'est une chose que tu ne fais pas avec une chaîne de bits ça...

Or si on code ceci on alloue 7 * 32 entiers.

Re: Représentation, hachage et somme

Posté : 17 déc. 2010, 17:40
par katagoto
>Seulement PHP alloue dynamiquement ses entiers

Qu'est ce que ca veux dire ?
ça veut dire que je peut pas allouer moi même le nombre de bits précis dont j'ai besoin, d'un côté ça simplifie bien l'un chose, d'un autre côté là ça m'ennuie.
En fait j'ai besoin de plus de 32 ou 64 bits.

Par avance merci de votre aide

Re: Représentation, hachage et somme

Posté : 17 déc. 2010, 21:00
par xTG
As-tu essayé de déclarer tes nombres dans la base hexa ?
Il me semble avoir déjà vu des codes utilisant des chiffres hexa portant sur plus de 32bits.

Re: Représentation, hachage et somme

Posté : 17 déc. 2010, 22:19
par devlop78
>Seulement PHP alloue dynamiquement ses entiers

Qu'est ce que ca veux dire ?
ça veut dire que je peut pas allouer moi même le nombre de bits précis dont j'ai besoin, d'un côté ça simplifie bien l'un chose, d'un autre côté là ça m'ennuie.
En fait j'ai besoin de plus de 32 ou 64 bits.

Par avance merci de votre aide

Je risque de dire une bêtise, mais ni en PHP, ni en Java (hé oui !), pointer sur la mémoire n'est pas possible, contrairement à C# en mode unsafe. Toutefois, il est possible de mettre le 0 et 1 sous forme de chaine de caractère (1 octet) ou de booléan (je sais pas combien de bits).

Re: Représentation, hachage et somme

Posté : 18 déc. 2010, 07:55
par katagoto
Bonjour,

La question que je me pose : est-il possible de manipuler les bits d'une chaîne de caractère comme un seul "grand entier" ?

Par avance merci

Re: Représentation, hachage et somme

Posté : 18 déc. 2010, 08:55
par epommate2
Tu veux faire quelque chose comme ca :
echo 212132132134545646556212123 & 213215465456456213 ;
?

A part en éclatant les nombre en morceaux de 32 (64) bits et en recrééant les opérations, je ne vois pas.

Re: Représentation, hachage et somme

Posté : 18 déc. 2010, 21:38
par katagoto
Bonsoir,

La question que je me pose est : comment sont stockées les chaînes de caractères ? si c'est comme en C, dois pouvoir appliquer les opérateurs binaires dessus, non ?

Par avance,
merci

Re: Représentation, hachage et somme

Posté : 19 déc. 2010, 02:54
par devlop78
Oui, tu peux, mais pas de pointeurs. Et surtout, c'est php qui s'en occupe, pas toi.

Ex :

$machin = "truc"; // Php s'occupe de l'allocation de la variable
$machin2 = $machin; // Php s'occupe de faire pointer $machin2 sur $machin, tout en enregistrant qu'il ne s'agit pas d'une référence.
$machin2 = 1; // Php s'occupe de ne plus pointer sur $mahcin2, et effectue le transtypage.
$machin3 = &$machin2; // php s'occupe de faire une référence ...

Par contre, il est tout à fait possible d'utiliser les opérateurs binaires tels que & et | qui diffèrent des opérateurs logiques && et ||

Re: Représentation, hachage et somme

Posté : 19 déc. 2010, 20:46
par katagoto
Merci, faut juste que je vois comment les "allouer", mais ça devrait allez.