Comparaison Binaire

Signaler
Messages postés
105
Date d'inscription
jeudi 16 mai 2002
Statut
Membre
Dernière intervention
22 janvier 2009
-
Messages postés
192
Date d'inscription
mercredi 26 décembre 2001
Statut
Membre
Dernière intervention
31 janvier 2007
-
Bonjour,

J'aimerais effectué une comparaison binaire.

6 = 110
2 = 010

Donc normal 6 & 2 devrait faire 010 (soit 2)...
si j'effectue le test suivant if(6 & 2 == 2) ca retourne faux ?
par contre si je fais if(5 & 2 = 2) la ca retourne vrai?
Est-ce que les nombres par defaut serait en format text et non numérique ?

Qqun aurait une idée ?
Merci

==============

Dreamers - Games programming team
[mailto:6po@dreamersteam.org Email]

8 réponses

Messages postés
44
Date d'inscription
mardi 14 janvier 2003
Statut
Membre
Dernière intervention
3 décembre 2004

TRASH52 :big) :big)
http://raptorx.free.fr
je sais pas trop pour ta question sur le binaire mais if(5 & 2 2) fonctionne car y'a un , met en 2 == et ca renverra peut-etre faux aussi!
Messages postés
728
Date d'inscription
jeudi 20 juin 2002
Statut
Membre
Dernière intervention
7 novembre 2007
1
le et logique s'écrit avec &&
c ptet ça qui chie
:big) Sylvain [[mailto:eax@eax-online.com email]] [homepage] [myCV]
Messages postés
105
Date d'inscription
jeudi 16 mai 2002
Statut
Membre
Dernière intervention
22 janvier 2009

Oauis le == c'est une faute en ecrivant le message :)
Enfin dans le code y a == :)

Pour Eax le && c'est pour une comparaison de valeur mais pas binaire me semble... en tout ca le && marche pas plus que le & :)

Qqun a une autre idee ?

En C c'est possible, ca doit etre possible en PHP aussi...
Meme en VB on peut le faire :big)

==============

Dreamers - Games programming team
[mailto:6po@dreamersteam.org Email]
Messages postés
105
Date d'inscription
jeudi 16 mai 2002
Statut
Membre
Dernière intervention
22 janvier 2009

Bon voila pour ceux qui seraient septiques

http://exeprod.com/doc/php/language.operators.bitwise.html

Code copier coller de la page :

Opérateurs sur les bits
Les opérateurs sur les bits vous permettent de manipuler les bits dans un entier.

Exemple 11-3. Exemples avec les opérateurs sur les bits

<?php
echo 12 ^ 9;
// Affiche '5'

echo "12" ^ "9";
// Affiche le caractère d'effacement (ascii 8)
// ('1' (ascii 49)) ^ ('9' (ascii 57)) = #8

echo "hallo" ^ "hello";
// Affiche la valeur asciie : s #0 #4 #0 #0 #0
// 'a' ^ 'e' = #4
?>

Tableau 11-3. Les opérateurs sur les bits

Exemple Nom Résultat
$a & $b ET (AND) Les bits positionnés à 1 dans $a ET dans $b sont positionnés à 1.
$a | $b OU (OR) Les bits positionnés à 1 dans $a OU $b sont sont positionnés à 1.
$a ^ $b Xor Les bits positionnés à 1 dans $a OU dans $b sont positionnés à 1.
~ $a NON (Not) Les bits qui sont positionnés à 1 dans $a sont positionnés à 0, et vice versa.
$a << $b Décalage à gauche Décale les bits de $a $b fois sur la gauche (chaque décalage équivaut à une multiplication par 2).
$a >> $b Décalage à droite Décalage des bits de $a $b fois par la droite (chaque décalage équivaut à une division par 2).

Ce que je voudrais c'est de dire que 6 & 2 bhen que c'est egal a 2 :)

--------------------------------------------------------------------------------

==============

Dreamers - Games programming team
[mailto:6po@dreamersteam.org Email]
Messages postés
105
Date d'inscription
jeudi 16 mai 2002
Statut
Membre
Dernière intervention
22 janvier 2009

Trouvé !

Mais je sais pas pkoi ca marche pas avec un IF....

$a = 6 ; //donc 0000 0110
$b = 2 ; //donc 0000 0010$c $a & $b //c 2 donc 0000 0010

if($c == 2) fonctionne

mais

if($a & $b == 2) fonctionne pas...
donc si vous voulez utilise une comparaise de bit et non logique utiliser & | ou ~ par contre evitez les IFs il semble qu'il y a un petit blem.... j'ai essayer avec et et = mais change rien, merci a tous ceux qui aurrait essayé de trouve une idée.

==============

Dreamers - Games programming team
[mailto:6po@dreamersteam.org Email]
Messages postés
13
Date d'inscription
samedi 9 février 2002
Statut
Membre
Dernière intervention
26 juin 2005

Salut,

Effectivement cela parait étrange !

Mais d'un autre coté :
Est ce que
if (6 & 2)
ne serait pas suffisant ?

Et sinon, est ce que
if ((6 & 2) == 2)
marche ? Je n'ai pas vérifié, mais peut être que le == est prioritaire par rapport a la comparaison binaire...
Messages postés
435
Date d'inscription
vendredi 20 septembre 2002
Statut
Membre
Dernière intervention
20 novembre 2004

essai avec des parathese sinon peut etre que "&" ne fonctionne quavec du binaie et non pas comme du texte :

a tester :
$a=(6 & 2);
if ($a == 2)

ou if ((110 & 010) == 2)
\-> Defkrie !?!
Messages postés
192
Date d'inscription
mercredi 26 décembre 2001
Statut
Membre
Dernière intervention
31 janvier 2007

c'est simple ... php gere tes nombres comme des chaines donc tu dois les convertir en entier avec (int) ou (integer)
ex:
((int)$a & (int)$b) == 2
ca devrait marcher

tcho, Arkko