Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1748 connectés 

 


Dernière réponse
Sujet : [PHP]fonction XOR
Sh@rdar arf..........

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
Sh@rdar arf..........
youdontcare dernière note, les opérateurs logiques ont une priorité inférieure aux opérateurs bitwise.
 
donc  
 $r = $a xor $b  
ne marchera pas. il faut utiliser
 $r = ($a xor $b)
En_Sabah_Nur

youdontcare a écrit a écrit :

oki, fausse alerte :D
 
^ est bitwise http://www.php.net/manual/en/langu [...] itwise.php
 
xor est logique http://www.php.net/manual/en/langu [...] ogical.php  




YAISSSSSSS
CQFD!!
donc fô utiliser le ^
merci à tous! :hello:

youdontcare oki, fausse alerte :D
 
^ est bitwise http://www.php.net/manual/en/langu [...] itwise.php
 
xor est logique http://www.php.net/manual/en/langu [...] ogical.php
youdontcare et beh PUTAING !  
 
php 3.0.16
php 4.0.4pl1
php 4.0.5rc1
 
les trois buggent.
Sh@rdar j'ai testé toutes les valeurs et elles sont identiques (et correctes) pour le ^ comme pour le XOR....
 
php 3.0.14.. vais tester sous php4 y a peut être un bug.....
youdontcare sh@rdar > teste avec toutes les combinaisons : 0 xor 0, 0 xor 1, 1 xor 0, 1 xor 1 ... qui devrait donc sortir 0 1 1 0.
 
avec ^, j'obtiens les bonnes valeurs
avec xor ou Xor, j'obtiens à chaque fois 0 0 1 1. ce qui est franchement ETRANGE et conforme à ton résultat, d'ailleurs.
 
je ne connaissais pas le xor sous forme 'xor', j'ai cherché dans les sources sans rien trouver ... :??:
Sh@rdar en tout cas j'ai testé et il m'a sorti les bonnes valeurs...
 
$a = 1;
$b = 0;
 
$c = $a ^ $b;
$d = $a Xor $b;
 
echo "$c-$d";
youdontcare essaye plutôt $r = 0 ^ 1;
En_Sabah_Nur

youdontcare a écrit a écrit :

 montre ton code (au point virgule près). c'est vraiment suspect ...  




j ai pas le code sous la main...mais c vraiment tout con :crazy:  
ca doit être un truc du genre
$r=0 xor 1;
 
et ca sur l ensemble de la table de vérité du xor...
donc je vois pas trop d erreur possible...

En_Sabah_Nur

nur a écrit a écrit :

 
 
 
C'est donc toi qui a pris le pseudo que je convoitais!  




ahah j en été sur en plus...j té vu sur blabla ce matin!
ben désolé ;)  
fan des x-men donc?

youdontcare tiens histoire de te rassurer, le bout de source 'incriminé' :  
 
ZEND_API int bitwise_xor_function(zval *result, zval *op1, zval *op2)
{
 zval op1_copy, op2_copy;
 
 if (op1->type == IS_STRING && op2->type == IS_STRING) {
  zval *longer, *shorter;
  char *result_str;
  int i, result_len;
 
  if (op1->value.str.len >= op2->value.str.len) {
   longer = op1;
   shorter = op2;
  } else {
   longer = op2;
   shorter = op1;
  }
 
  result->type = IS_STRING;
  result_len = shorter->value.str.len;
  result_str = estrndup(shorter->value.str.val, shorter->value.str.len);
  for (i = 0; i < shorter->value.str.len; i++) {
   result_str[i] ^= longer->value.str.val[i];
  }
  if (result==op1) {
   efree(result->value.str.val);
  }
  result->value.str.val = result_str;
  result->value.str.len = result_len;
  return SUCCESS;
 }
 
 zendi_convert_to_long(op1, op1_copy, result);
 zendi_convert_to_long(op2, op2_copy, result);  
 
 result->type = IS_LONG;
result->value.lval = op1->value.lval ^ op2->value.lval; return SUCCESS;
}
 
comme tu peux le voir, tout va bien. cherche une vraie solution au problème plutôt que de te faire une fonction custom (!).
youdontcare

En_Sabah_Nur a écrit a écrit :

y a pas de problême de priorité puiske j ai fais les tests sur deux valeurs toutes simples...0 et 1...
 
et il fait n importe koi...enfin non, mais pas ce k il devré faire...
 
donc je suis obligé de créer une fonction xor... :(


montre ton code (au point virgule près). c'est vraiment suspect ...

nur

En_Sabah_Nur a écrit a écrit :

y a pas de problême de priorité puiske j ai fais les tests sur deux valeurs toutes simples...0 et 1...
 
et il fait n importe koi...enfin non, mais pas ce k il devré faire...
 
donc je suis obligé de créer une fonction xor... :(  




 
 
C'est donc toi qui a pris le pseudo que je convoitais!

En_Sabah_Nur

NicolasP a écrit a écrit :

Si mes souvenirs sont bons ...  
 
a xor b; php renvoie false si a = b et true si a ou b enfin je crois...
En francais a ou b mais pas a et b !  




ca voudré dire k il trvaille k en logike pure...
donc il ne calcule pas par exemple la valeur de (1011)xor(1000)  :??:  
même la calculatrice de zindôws sait le faire :pt1cable:

En_Sabah_Nur y a pas de problême de priorité puiske j ai fais les tests sur deux valeurs toutes simples...0 et 1...
 
et il fait n importe koi...enfin non, mais pas ce k il devré faire...
 
donc je suis obligé de créer une fonction xor... :(
DevKiller le xor c un OU exclusif !
donc ni ou ni et mais un mélange des 2 !
NicolasP Si mes souvenirs sont bons ...  
 
a xor b; php renvoie false si a = b et true si a ou b enfin je crois...
En francais a ou b mais pas a et b !
DevKiller étonnant !
 
ta table correspond à :
     x & (!y | y)
  => x
 
alors que le XOR : (x & !y) | (!x & y)
 
t sûr de ta vérif, il ne s'agirait pô d'un pb de priorité, de parenthèse ?
 
:)
En_Sabah_Nur j ai essayé tout connement de vérifier la table de vérité du xor ben ca marche pô :(  
me fôdré çà
00-->0
01-->1
10-->1
11-->0
 
il me donne çà  :ouch:  
00-->0
01-->0
10-->1
11-->1
 
comment je fais mouah...je me tape la fonction xor à la main???
DevKiller bin ca dépend évidemment de ta valeur b, (a xor 0) = a !
es-tu sûr de sa valeur au moment du ^ ?
 
:)
En_Sabah_Nur ca marche comment???
parce ke en faisant a xor b il me sort tout le temps a...
il a fumé apache????

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)