OVH Cloud OVH Cloud

manipulations de bits

9 réponses
Avatar
lionel
bonjour,
existe-t-il en VB des possibilit=E9s de manipulations de=20
bits (AND, OR, XOR, NOT, d=E9calages ...), ou du=20
style "tester le 3=E8me bit d'un octet" ???

Merci

9 réponses

Avatar
ng
Salut,

Oui les opérateurs logiques sont bien là :

Dim bBit1 as Boolean, bBit2 as Boolean, bBit3 as Boolean

bBit = bBit1 Xor bBit2
bBit = bBit1 And bBit2

etc...

--
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/


"lionel" a écrit dans le message de
news: bc0e01c3eca0$28d9f100$
bonjour,
existe-t-il en VB des possibilités de manipulations de
bits (AND, OR, XOR, NOT, décalages ...), ou du
style "tester le 3ème bit d'un octet" ???

Merci
Avatar
surfeur75
Bonjour,
Alors je ne sais pas si VB fait ça, car AND c'est le (et), OR le (ou), NOT
c'est 'linversion d'un état (boolean), etc...
Donc je ne suis pas certain qu'on puisse appliquer ça à des bits, puisqu'ils
ont déjà une affectation différente...
Moi je fais un tableau manuel dans excel, le code ascii converti en binaire
chaine, puis ensuite on peut faire ce qu'on veut avec les fonctions de
chaines...
Peut être que c'est possible, comme en C, voir les autres réponse, sinon
t'as au moins une solution...???...
--
@+, bye, Joe.
Pour m'écrire ng75AROBASEnoosPOINTfr
remplace AROBASE et POINT par leur vrai signe
Il l'a fait car il ne savait pas que c'était impossible, alea jacta est!


"lionel" a écrit dans le message de
news: bc0e01c3eca0$28d9f100$
bonjour,
existe-t-il en VB des possibilités de manipulations de
bits (AND, OR, XOR, NOT, décalages ...), ou du
style "tester le 3ème bit d'un octet" ???

Merci
Avatar
jean-marc
"lionel" wrote in message
news:bc0e01c3eca0$28d9f100$
bonjour,
existe-t-il en VB des possibilités de manipulations de
bits (AND, OR, XOR, NOT, décalages ...), ou du
style "tester le 3ème bit d'un octet" ???



Hello,

oui il y a. Il suffit de lire la documentation, et on trouve ceci (pour le
and, mais c'est la même chose pour le OR et les autres fonctions logiques:

And Operator
Used to perform a logical conjunction on two expressions.
Syntax
result = expression1 And expression2

The And operator also performs a bitwise comparison of identically
positioned bits in two numeric expressions and sets the corresponding bit in
result according to the following table:

If bit in expression1 is And bit in expression2 is The result is
0 0 0
0 1 0
1 0 0
1 1 1

Jean-Marc
Avatar
lionel
ok, je vois bien que a And b , ca marche ...
Y a-t-il une fonction pour transformer un nombre en
binaire?
comment tester un bit?
comment compter le nombre de bits à 1 dans un nombre, je
veux dire de manière performante, rapide?

Merci
-----Message d'origine-----
"lionel" wrote in


message
news:bc0e01c3eca0$28d9f100$
bonjour,
existe-t-il en VB des possibilités de manipulations de
bits (AND, OR, XOR, NOT, décalages ...), ou du
style "tester le 3ème bit d'un octet" ???



Hello,

oui il y a. Il suffit de lire la documentation, et on


trouve ceci (pour le
and, mais c'est la même chose pour le OR et les autres


fonctions logiques:

And Operator
Used to perform a logical conjunction on two expressions.
Syntax
result = expression1 And expression2

The And operator also performs a bitwise comparison of


identically
positioned bits in two numeric expressions and sets the


corresponding bit in
result according to the following table:

If bit in expression1 is And bit in expression2 is The


result is
0 0 0
0 1 0
1 0 0
1 1 1

Jean-Marc




.



Avatar
lionel
merci
-----Message d'origine-----
Salut,

Oui les opérateurs logiques sont bien là :

Dim bBit1 as Boolean, bBit2 as Boolean, bBit3 as Boolean

bBit = bBit1 Xor bBit2
bBit = bBit1 And bBit2

etc...

--
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/


"lionel" a écrit


dans le message de
news: bc0e01c3eca0$28d9f100$
bonjour,
existe-t-il en VB des possibilités de manipulations de
bits (AND, OR, XOR, NOT, décalages ...), ou du
style "tester le 3ème bit d'un octet" ???

Merci


.



Avatar
lionel
merci
-----Message d'origine-----
Bonjour,
Alors je ne sais pas si VB fait ça, car AND c'est le


(et), OR le (ou), NOT
c'est 'linversion d'un état (boolean), etc...
Donc je ne suis pas certain qu'on puisse appliquer ça à


des bits, puisqu'ils
ont déjà une affectation différente...
Moi je fais un tableau manuel dans excel, le code ascii


converti en binaire
chaine, puis ensuite on peut faire ce qu'on veut avec les


fonctions de
chaines...
Peut être que c'est possible, comme en C, voir les autres


réponse, sinon
t'as au moins une solution...???...
--
@+, bye, Joe.
Pour m'écrire ng75AROBASEnoosPOINTfr
remplace AROBASE et POINT par leur vrai signe
Il l'a fait car il ne savait pas que c'était impossible,


alea jacta est!


"lionel" a écrit


dans le message de
news: bc0e01c3eca0$28d9f100$
bonjour,
existe-t-il en VB des possibilités de manipulations de
bits (AND, OR, XOR, NOT, décalages ...), ou du
style "tester le 3ème bit d'un octet" ???

Merci


.



Avatar
Gilles RONSIN
"lionel" , le ven. 06 févr.
2004 14:14:06, écrivait ceci:

Salut,

ok, je vois bien que a And b , ca marche ...
Y a-t-il une fonction pour transformer un nombre en
binaire?


debug.print bin$(x)

comment tester un bit?


pour le troisiéme bit
if x and &h04= &h04 then
'troisième bit à 1
else
'troisième bit à 0
end if

comment compter le nombre de bits à 1 dans un nombre, je
veux dire de manière performante, rapide?


là c'est du traitement de chaine sous VB. Par contre pour la
performance si tu as des traitements répétitifs, le mieux est sans
doute de passer par une dll écrite en C par exemple


--
Embryon de site : http://gilles.ronsin.free.fr
Nouvelles astuces : Interprêtation des évenements XP et intégration ICQ
dans Opera
Les gens qui ne rient jamais, ne sont pas des gens sérieux.
Avatar
lionel
Merci bcp
-----Message d'origine-----
"lionel" , le ven.


06 févr.
2004 14:14:06, écrivait ceci:

Salut,

ok, je vois bien que a And b , ca marche ...
Y a-t-il une fonction pour transformer un nombre en
binaire?


debug.print bin$(x)

comment tester un bit?


pour le troisiéme bit
if x and &h04= &h04 then
'troisième bit à 1
else
'troisième bit à 0
end if

comment compter le nombre de bits à 1 dans un nombre,




je
veux dire de manière performante, rapide?


là c'est du traitement de chaine sous VB. Par contre pour


la
performance si tu as des traitements répétitifs, le mieux


est sans
doute de passer par une dll écrite en C par exemple


--
Embryon de site : http://gilles.ronsin.free.fr
Nouvelles astuces : Interprêtation des évenements XP et


intégration ICQ
dans Opera
Les gens qui ne rient jamais, ne sont pas des gens


sérieux.
.



Avatar
Zoury
Salut Lionel! :O)


Karl E. Peterson offre une librairie de fonctions de manipulation de bits..
elle t'intéressera peut-être (voir l'exemple twiddle.zip)
http://www.mvps.org/vb/samples.htm

Y a-t-il une fonction pour transformer un nombre en
binaire?



en mémoire, tout les nombres sont en binaire. Si tu parles d'obtenir la
*représentation* binaire d'un nombre en String, regarde la librairie de
Karl... la fonction Display().

comment tester un bit?



voir l'exemple de Gilles ou encore la librairie twiddle..

comment compter le nombre de bits à 1 dans un nombre, je
veux dire de manière performante, rapide?



même concept mais dans un boucle.. voici un exemple, mais les classes de
Karl te permettront de faire cela encore plus facilement..

Exemple :
'***
Option Explicit

Private Sub Form_Load()

Dim b As Byte
Dim i As Long
Dim cpt As Long

b = 7 ' 0000 0111

For i = 0 To LenB(b) * 8 - 1
If ((b And 2 ^ i) = 2 ^ i) Then cpt = cpt + 1
Next i

Debug.Print cpt

End Sub
'***


--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous