Comparaison Binaire

cs_6Po Messages postés 105 Date d'inscription jeudi 16 mai 2002 Statut Membre Dernière intervention 22 janvier 2009 - 24 sept. 2003 à 17:53
cs_Arkko Messages postés 192 Date d'inscription mercredi 26 décembre 2001 Statut Membre Dernière intervention 31 janvier 2007 - 4 août 2004 à 17:30
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

TRASH52 Messages postés 44 Date d'inscription mardi 14 janvier 2003 Statut Membre Dernière intervention 3 décembre 2004 1
24 sept. 2003 à 18:57
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!
0
eax Messages postés 728 Date d'inscription jeudi 20 juin 2002 Statut Membre Dernière intervention 7 novembre 2007 2
24 sept. 2003 à 19:10
le et logique s'écrit avec &&
c ptet ça qui chie
:big) Sylvain [[mailto:eax@eax-online.com email]] [homepage] [myCV]
0
cs_6Po Messages postés 105 Date d'inscription jeudi 16 mai 2002 Statut Membre Dernière intervention 22 janvier 2009
24 sept. 2003 à 22:14
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]
0
cs_6Po Messages postés 105 Date d'inscription jeudi 16 mai 2002 Statut Membre Dernière intervention 22 janvier 2009
24 sept. 2003 à 22:30
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]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_6Po Messages postés 105 Date d'inscription jeudi 16 mai 2002 Statut Membre Dernière intervention 22 janvier 2009
24 sept. 2003 à 22:43
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]
0
cs_JulienC Messages postés 13 Date d'inscription samedi 9 février 2002 Statut Membre Dernière intervention 26 juin 2005
26 sept. 2003 à 01:23
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...
0
defkrie Messages postés 435 Date d'inscription vendredi 20 septembre 2002 Statut Membre Dernière intervention 20 novembre 2004
26 sept. 2003 à 22:51
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 !?!
0
cs_Arkko Messages postés 192 Date d'inscription mercredi 26 décembre 2001 Statut Membre Dernière intervention 31 janvier 2007
4 août 2004 à 17:30
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
0
Rejoignez-nous