Page 1 sur 2
if ( j & 1 || ! strstr ( " \t" , F ) )
Publié : lun. 25/oct./2004 18:37
par Patrick88
c'est du C , qui peut me dire en clair ce que ça veut dire :
int j et char F [ 2 ]
-> ça if ( j & 1 || ! strstr ( " \t" , F ) )
les || ! &
( & = and , et logique )
( ! = not comme dans != not égale )
mais || j'ai zoublié
qu'est que ça peut bien donné comme résultat
sachant que
strstr est une fonction définie par l'utilisateur
qui recherche " \t" dans le buffer F et renvoie la 1ere position de l'argument dans le buffer, si pas trouvé renvoit 0
j=résultat d'un incrément .
patrick88
Publié : lun. 25/oct./2004 18:45
par Chris
|| c'est pas un OU logique, ça?
Publié : lun. 25/oct./2004 18:51
par Dr. Dri
si j est impair ou que strstr("\t", ...) retourne 0
Dri
Publié : lun. 25/oct./2004 19:10
par Patrick88
ok , c'est noté merci
euh !

et comment on dit impair en purebasic !?
patrick
Publié : lun. 25/oct./2004 19:16
par Chris
Fais un Modulo (a % b)
Publié : lun. 25/oct./2004 19:33
par Anonyme2
Patrick88 a écrit :ok , c'est noté merci
euh !

et comment on dit impair en purebasic !?
patrick
Code : Tout sélectionner
a = 3
b = 6
If a & 1
Debug "a est impair"
Else
Debug "a est pair"
EndIf
If b & 1
Debug "b est impair"
Else
Debug "b est pair"
EndIf
Publié : lun. 25/oct./2004 20:02
par Chris
Denis, pourquoi a & 1
Code : Tout sélectionner
a = 3
b = 6
If a % 2
Debug "a est impair"
Else
Debug "a est pair"
EndIf
If b % 2
Debug "b est impair"
Else
Debug "b est pair"
EndIf
On a assez ralé pour l'avoir, la fonction Modulo, il me semble
Et finalement, qu'est-ce qu'un nombre pair, sinon un nombre divisible par 2

Publié : lun. 25/oct./2004 20:36
par comtois
sans doute parce que le modulo est deux fois plus lent
Code : Tout sélectionner
a = 3
b = 6
c=10000000
temps=ElapsedMilliseconds()
For i=1 To c
a & 2
b & 2
Next i
total = ElapsedMilliseconds()-temps
Debug total
temps=ElapsedMilliseconds()
For i=1 To c
a % 2
b % 2
Next i
total = ElapsedMilliseconds()-temps
Debug total
Publié : lun. 25/oct./2004 20:51
par Chris
Meuuuh non!!! , à peine une seconde de différence entre les deux
Publié : mar. 26/oct./2004 6:23
par Anonyme2
Chris a écrit :Denis, pourquoi a & 1
Et bien il faut pour comprendre reprendre la correspondance décimal/bianire.
Je vais prendre quelques nombres simples.
de décimal en binaire
0 --> 0000
1 --> 0001
2 --> 0010
3 --> 0011
4 --> 0100
5 --> 0101
6 --> 0110
7 --> 0111
etc
si je fait un & 1 avec ces nombres (Et logique)
0 --> 0000 & 0001 = 0000
1 --> 0001 & 0001 = 0001
2 --> 0010 & 0001 = 0000
3 --> 0011 & 0001 = 0001
4 --> 0100 & 0001 = 0000
5 --> 0101 & 0001 = 0001
6 --> 0110 & 0001 = 0000
7 --> 0111 & 0001 = 0001
En regardant bien, tous les nombres impairs ont le bit de poids faible toujours à 1 et les nombres pairs ce même bit toujours à 0. Il suffit donc de tester ce bit avec un ET logique de valeur 1 pour trouver ou non la parité. Ceci est valable quel que soit le nombre.
Publié : mar. 26/oct./2004 14:06
par Le Soldat Inconnu
Génial, ton idée Denis

Publié : mar. 26/oct./2004 14:15
par Chris
Le Soldat Inconnu a écrit :Génial, ton idée Denis

Ouais, et en plus, c'est nettement plus rapide.
1 à 1,5 seconde de différence, c'est quand même pas rien, quand onvoit que pour certains code, il y en a qui chipotent pour 2 ou 3 millisecondes sur le même nombre de boucles.

Publié : mar. 26/oct./2004 14:17
par Le Soldat Inconnu
2 ou 3 millisecondes
c'est significatif ça

Publié : mar. 26/oct./2004 14:30
par Dr. Dri
Denis a écrit :si je fait un & 1 avec ces nombres (Et logique)
Concretement, si j'avais osé dire ca devant mon prof d'électronique je me serait fait trucider (ca remonte à quelques années maintenant ^^)
c'est surtout pas un et "logique" mais plutot binaire puisque comme tu l'as montré il applique le ET à chaque bit des deux nombres...
un et logique (&& en C, And en PB) teste à faux... faux c'est 0, vrai c'est tout le reste...
Code : Tout sélectionner
A = %01 ;A=1
B = %10 ;B=2
;Test binaire, il va retourner faux car A et B n'ont aucun 1 en commun
If A&B
Debug "Binaire"
EndIF
;Test logique, il va retourner vrai car ni A ni B n'est faux, n'est égal à zéro
If A And B
Debug "Logique"
Endif
Dri
Publié : mar. 26/oct./2004 15:22
par Anonyme2
Tout à fait Dri, c'est une erreur de langage de ma part mais bon, je ne suis plus à ça près
