-- Ceci est une signature automatique de MesNews. Site : http://www.mesnews.net
Clive Lumb
"Patrice Henrio" a écrit dans le message de news:
Et pourquoi ne pas traduire directement la formule mathématiques Nouvelle valeur = 1-ancienne valeur qui transforme bien 1 en 0 et 0 en 1 Function Phi( x as Integer) as integer Phi=1-x End Function
Et là je suis passé à coté .... allègrement ... de la solution la plus élégante.
Mais je me demande si Raymond n'a pas besoin du "NOT" pour faire des conversions d'octet style 01010101 -> 10101010. Dans quel cas l'operateur XOR avec 11111111 pourrait convenir.
Clive
"Patrice Henrio" <patrice.henrio@laposte.net> a écrit dans le message de
news:u14p3GWDFHA.3416@TK2MSFTNGP09.phx.gbl...
Et pourquoi ne pas traduire directement la formule mathématiques
Nouvelle valeur = 1-ancienne valeur
qui transforme bien 1 en 0 et 0 en 1
Function Phi( x as Integer) as integer
Phi=1-x
End Function
Et là je suis passé à coté .... allègrement ... de la solution la plus
élégante.
Mais je me demande si Raymond n'a pas besoin du "NOT" pour faire des
conversions d'octet style 01010101 -> 10101010. Dans quel cas l'operateur
XOR avec 11111111 pourrait convenir.
Et pourquoi ne pas traduire directement la formule mathématiques Nouvelle valeur = 1-ancienne valeur qui transforme bien 1 en 0 et 0 en 1 Function Phi( x as Integer) as integer Phi=1-x End Function
Et là je suis passé à coté .... allègrement ... de la solution la plus élégante.
Mais je me demande si Raymond n'a pas besoin du "NOT" pour faire des conversions d'octet style 01010101 -> 10101010. Dans quel cas l'operateur XOR avec 11111111 pourrait convenir.
Clive
Clive Lumb
"ng" a écrit dans le message de news:
0<>b équivaut à b car b=0 équivaut à Not b on a donc un booléan (et il a été montré (par des benchmarks) que ce genre de test : If Búlse/B=true/B=0/b<>0 pour des booléans est 70% plus lent
que
simplement If b/Not b)
-not(b<>0) équivaut donc à -Not b on note qu'il y a une conversion (implicite) de booléan en integer donc autant la faire explicitement (c'est aussi rapide) : -CInt(b) ce que
le
compilateur interprete exactement de la même facon que CInt(b) * -1 (cf
mon
message).
Nicolas, En es-tu sûr... ? Chez moi -Not b rend 2 ! Ce qui est logique car NOT inverse tous les bits, donc NOT 1, où 1 est un entier (implicite), est en effet le complément négatif car le bit le plus significatif (qui est le bit de signe) est aussi inversé.
Rappel: dans VB les entiers sont stockés sur 16 bits en utilisant le 16eme bit pour la signe. Pour trouver le négatif d'un numéro on inverse tous les bits puis on ajoute 1. (voir par exemple http://www.commentcamarche.net/base/representation.php3) On peut s'en rendre compte simplement dans VB en créant la fonction "moins"
Public Function Moins(A) 'Marche pour entier et longs Moins = 1 + Not A End Function
On peut noter que si A est un byte (donc non signé) le NOT rend le complément de 255, donc NOT 0 est 255
Clive
"ng" <ng@ngsoft-fr.com> a écrit dans le message de
news:uRJORIVDFHA.2756@TK2MSFTNGP15.phx.gbl...
0<>b équivaut à b car b=0 équivaut à Not b
on a donc un booléan (et il a été montré (par des benchmarks) que ce genre
de test : If Búlse/B=true/B=0/b<>0 pour des booléans est 70% plus lent
que
simplement If b/Not b)
-not(b<>0) équivaut donc à -Not b
on note qu'il y a une conversion (implicite) de booléan en integer
donc autant la faire explicitement (c'est aussi rapide) : -CInt(b) ce que
le
compilateur interprete exactement de la même facon que CInt(b) * -1 (cf
mon
message).
Nicolas,
En es-tu sûr... ?
Chez moi -Not b rend 2 !
Ce qui est logique car NOT inverse tous les bits, donc NOT 1, où 1 est un
entier (implicite), est en effet le complément négatif car le bit le plus
significatif (qui est le bit de signe) est aussi inversé.
Rappel: dans VB les entiers sont stockés sur 16 bits en utilisant le 16eme
bit pour la signe. Pour trouver le négatif d'un numéro on inverse tous les
bits puis on ajoute 1. (voir par exemple
http://www.commentcamarche.net/base/representation.php3)
On peut s'en rendre compte simplement dans VB en créant la fonction "moins"
Public Function Moins(A) 'Marche pour entier et longs
Moins = 1 + Not A
End Function
On peut noter que si A est un byte (donc non signé) le NOT rend le
complément de 255, donc NOT 0 est 255
0<>b équivaut à b car b=0 équivaut à Not b on a donc un booléan (et il a été montré (par des benchmarks) que ce genre de test : If Búlse/B=true/B=0/b<>0 pour des booléans est 70% plus lent
que
simplement If b/Not b)
-not(b<>0) équivaut donc à -Not b on note qu'il y a une conversion (implicite) de booléan en integer donc autant la faire explicitement (c'est aussi rapide) : -CInt(b) ce que
le
compilateur interprete exactement de la même facon que CInt(b) * -1 (cf
mon
message).
Nicolas, En es-tu sûr... ? Chez moi -Not b rend 2 ! Ce qui est logique car NOT inverse tous les bits, donc NOT 1, où 1 est un entier (implicite), est en effet le complément négatif car le bit le plus significatif (qui est le bit de signe) est aussi inversé.
Rappel: dans VB les entiers sont stockés sur 16 bits en utilisant le 16eme bit pour la signe. Pour trouver le négatif d'un numéro on inverse tous les bits puis on ajoute 1. (voir par exemple http://www.commentcamarche.net/base/representation.php3) On peut s'en rendre compte simplement dans VB en créant la fonction "moins"
Public Function Moins(A) 'Marche pour entier et longs Moins = 1 + Not A End Function
On peut noter que si A est un byte (donc non signé) le NOT rend le complément de 255, donc NOT 0 est 255
Clive
LE TROLL
Oh, je n'ai pas fait attention, j'ai voulu mettre le principe, c'est-à-dire de sauter la seconde ligne quand la première était bonne... L'if est mieux, évidemment... ------
"Kiriasse" a écrit dans le message de news: 4207781d$0$2154$
Curieux emploi de GoTo...
J'aurais écrit plus simplement : Dim I As Integer
If I = 1 Then I = 0 ElseIf I = 0 Then I = 1 End If
Ou
Select Case I Case 0: I = 1 Case 1: I = 0 End Select
Kiriasse www.kiriasse.fr
== > "LE TROLL" <le a écrit dans le message de news:
if x = 1 then x = 0 goto fin x = 1 fin: -------------------
== >> "Raymond Fournier" <duracelle(Enlever-ceci)@sympatico.ca> a écrit dans le
message de news:
Comment fait -on pour que 1 devient 0, ou 0 devient 1. J' ai essayé avec not, mais 1 devient -1.
Oh, je n'ai pas fait attention, j'ai voulu mettre le principe,
c'est-à-dire de sauter la seconde ligne quand la première était bonne...
L'if est mieux, évidemment...
------
"Kiriasse" <nospam@nospam.fr> a écrit dans le message de news:
4207781d$0$2154$8fcfb975@news.wanadoo.fr...
Curieux emploi de GoTo...
J'aurais écrit plus simplement :
Dim I As Integer
If I = 1 Then
I = 0
ElseIf I = 0 Then
I = 1
End If
Ou
Select Case I
Case 0: I = 1
Case 1: I = 0
End Select
Kiriasse
www.kiriasse.fr
== > "LE TROLL" <le troll@paris.fr> a écrit dans le message de news:
ebQL2MODFHA.3108@TK2MSFTNGP10.phx.gbl...
if x = 1 then x = 0 goto fin
x = 1
fin:
-------------------
== >> "Raymond Fournier" <duracelle(Enlever-ceci)@sympatico.ca> a écrit dans le
message de news: mn.353b7d52b9bac207.24806@sympatico.ca...
Comment fait -on pour que 1 devient 0, ou 0 devient 1. J' ai essayé avec
not, mais 1 devient -1.
Oh, je n'ai pas fait attention, j'ai voulu mettre le principe, c'est-à-dire de sauter la seconde ligne quand la première était bonne... L'if est mieux, évidemment... ------
"Kiriasse" a écrit dans le message de news: 4207781d$0$2154$
Curieux emploi de GoTo...
J'aurais écrit plus simplement : Dim I As Integer
If I = 1 Then I = 0 ElseIf I = 0 Then I = 1 End If
Ou
Select Case I Case 0: I = 1 Case 1: I = 0 End Select
Kiriasse www.kiriasse.fr
== > "LE TROLL" <le a écrit dans le message de news:
if x = 1 then x = 0 goto fin x = 1 fin: -------------------
== >> "Raymond Fournier" <duracelle(Enlever-ceci)@sympatico.ca> a écrit dans le
message de news:
Comment fait -on pour que 1 devient 0, ou 0 devient 1. J' ai essayé avec not, mais 1 devient -1.
ng
Oups au temps pour moi, j'ai oublié que ton b n'était pas booléan.
-- Nicolas G. FAQ VB : http://faq.vb.free.fr API Guide : http://www.allapi.net Google Groups : http://groups.google.fr/ MZ-Tools : http://www.mztools.com/
Clive Lumb wrote:
"ng" a écrit dans le message de news:
0<>b équivaut à b car b=0 équivaut à Not b on a donc un booléan (et il a été montré (par des benchmarks) que ce genre de test : If Búlse/B=true/B=0/b<>0 pour des booléans est 70% plus lent que simplement If b/Not b)
-not(b<>0) équivaut donc à -Not b on note qu'il y a une conversion (implicite) de booléan en integer donc autant la faire explicitement (c'est aussi rapide) : -CInt(b) ce que le compilateur interprete exactement de la même facon que CInt(b) * -1 (cf mon message).
Nicolas, En es-tu sûr... ? Chez moi -Not b rend 2 ! Ce qui est logique car NOT inverse tous les bits, donc NOT 1, où 1 est un entier (implicite), est en effet le complément négatif car le bit le plus significatif (qui est le bit de signe) est aussi inversé.
Rappel: dans VB les entiers sont stockés sur 16 bits en utilisant le 16eme bit pour la signe. Pour trouver le négatif d'un numéro on inverse tous les bits puis on ajoute 1. (voir par exemple http://www.commentcamarche.net/base/representation.php3) On peut s'en rendre compte simplement dans VB en créant la fonction "moins"
Public Function Moins(A) 'Marche pour entier et longs Moins = 1 + Not A End Function
On peut noter que si A est un byte (donc non signé) le NOT rend le complément de 255, donc NOT 0 est 255
Clive
Oups au temps pour moi, j'ai oublié que ton b n'était pas booléan.
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
Clive Lumb wrote:
"ng" <ng@ngsoft-fr.com> a écrit dans le message de
news:uRJORIVDFHA.2756@TK2MSFTNGP15.phx.gbl...
0<>b équivaut à b car b=0 équivaut à Not b
on a donc un booléan (et il a été montré (par des benchmarks) que ce
genre de test : If Búlse/B=true/B=0/b<>0 pour des booléans est 70%
plus lent que simplement If b/Not b)
-not(b<>0) équivaut donc à -Not b
on note qu'il y a une conversion (implicite) de booléan en integer
donc autant la faire explicitement (c'est aussi rapide) : -CInt(b)
ce que le compilateur interprete exactement de la même facon que
CInt(b) * -1 (cf mon message).
Nicolas,
En es-tu sûr... ?
Chez moi -Not b rend 2 !
Ce qui est logique car NOT inverse tous les bits, donc NOT 1, où 1
est un entier (implicite), est en effet le complément négatif car le
bit le plus significatif (qui est le bit de signe) est aussi inversé.
Rappel: dans VB les entiers sont stockés sur 16 bits en utilisant le
16eme bit pour la signe. Pour trouver le négatif d'un numéro on
inverse tous les bits puis on ajoute 1. (voir par exemple
http://www.commentcamarche.net/base/representation.php3)
On peut s'en rendre compte simplement dans VB en créant la fonction
"moins"
Public Function Moins(A) 'Marche pour entier et longs
Moins = 1 + Not A
End Function
On peut noter que si A est un byte (donc non signé) le NOT rend le
complément de 255, donc NOT 0 est 255
Oups au temps pour moi, j'ai oublié que ton b n'était pas booléan.
-- Nicolas G. FAQ VB : http://faq.vb.free.fr API Guide : http://www.allapi.net Google Groups : http://groups.google.fr/ MZ-Tools : http://www.mztools.com/
Clive Lumb wrote:
"ng" a écrit dans le message de news:
0<>b équivaut à b car b=0 équivaut à Not b on a donc un booléan (et il a été montré (par des benchmarks) que ce genre de test : If Búlse/B=true/B=0/b<>0 pour des booléans est 70% plus lent que simplement If b/Not b)
-not(b<>0) équivaut donc à -Not b on note qu'il y a une conversion (implicite) de booléan en integer donc autant la faire explicitement (c'est aussi rapide) : -CInt(b) ce que le compilateur interprete exactement de la même facon que CInt(b) * -1 (cf mon message).
Nicolas, En es-tu sûr... ? Chez moi -Not b rend 2 ! Ce qui est logique car NOT inverse tous les bits, donc NOT 1, où 1 est un entier (implicite), est en effet le complément négatif car le bit le plus significatif (qui est le bit de signe) est aussi inversé.
Rappel: dans VB les entiers sont stockés sur 16 bits en utilisant le 16eme bit pour la signe. Pour trouver le négatif d'un numéro on inverse tous les bits puis on ajoute 1. (voir par exemple http://www.commentcamarche.net/base/representation.php3) On peut s'en rendre compte simplement dans VB en créant la fonction "moins"
Public Function Moins(A) 'Marche pour entier et longs Moins = 1 + Not A End Function
On peut noter que si A est un byte (donc non signé) le NOT rend le complément de 255, donc NOT 0 est 255
Clive
Aski
Bonjour eric,
En tous cas tu es le gagnant absolu de ce concours. Beaucoup d'entre nous somme honteux de ne pas avoir trouvé.
Aski
"Barsalou" a écrit dans le message de news:
Bonsoir C'est pourtant simple i = 1- i
Transforme 1 en 0 et 0 en 1
Bonjour eric,
En tous cas tu es le gagnant absolu de ce concours.
Beaucoup d'entre nous somme honteux de ne pas avoir trouvé.
Aski
"Barsalou" <ericMettreUnPointbarsalou@wanadoo.fr> a écrit dans le message de
news:ObsquIWDFHA.2676@TK2MSFTNGP12.phx.gbl...
En tous cas tu es le gagnant absolu de ce concours. Beaucoup d'entre nous somme honteux de ne pas avoir trouvé.
Aski
"Barsalou" a écrit dans le message de news:
Bonsoir C'est pourtant simple i = 1- i
Transforme 1 en 0 et 0 en 1
Patrice Henrio
Battu de cinq minutes ! Damned ! "Barsalou" a écrit dans le message de news:
Bonsoir C'est pourtant simple i = 1- i
Transforme 1 en 0 et 0 en 1
Battu de cinq minutes ! Damned !
"Barsalou" <ericMettreUnPointbarsalou@wanadoo.fr> a écrit dans le message de
news: ObsquIWDFHA.2676@TK2MSFTNGP12.phx.gbl...