L'oppérateur &

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Lord Nelson
Messages : 355
Inscription : dim. 01/déc./2013 15:29

L'oppérateur &

Message par Lord Nelson »

Salut,

b.w = %1100 & %1010, Le résutlat sera %1000
J'ai piger le principe mais est-il possible de faire l’opération inverse (J'en doute fort !) ?

En gros ici (C'est mon interprétation), ont fusionne les deux valeur.
Mais pour faire l'inverse ont peut pas si ?! :?

Comment retrouver 1100 Puis 1010 dans 1000 ?
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: L'oppérateur &

Message par falsam »

:!: :?:
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: L'oppérateur &

Message par Micoute »

Bonjour Lord Nelson,

je vois que tu as des lacunes avec les tables de vérité.

L'opérateur & fait une comparaison binaire de bits entre une valeur ET une autre valeur.

Regarde dans le fichier d'aide de PB : Thèmes généraux ==> Variables, Types et Opérateurs
Dernière modification par Micoute le ven. 31/oct./2014 15:09, modifié 1 fois.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Lord Nelson
Messages : 355
Inscription : dim. 01/déc./2013 15:29

Re: L'oppérateur &

Message par Lord Nelson »

Je le sais déjà, c'est bien pour ça que je poste ça :)
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: L'oppérateur &

Message par G-Rom »

Lord Nelson a écrit :Je le sais déjà, c'est bien pour ça que je poste ça :)
C'est que tu n'as pas compris.
Tu cherches a faire du "bit shifting" , c'est simple :

Code : Tout sélectionner

Macro quote
  "
EndMacro

Macro Check(val)
  If MaValeur & #val : Debug "#"+quote#val#quote : EndIf 
EndMacro


#_A=1
#_B=2
#_C=4
#_D=8
#_E=16
#_F=32


MaValeur.l = #_A | #_B | #_F

Debug "MaValeur possède : "
Check(_A)
Check(_B)
Check(_C)
Check(_D)
Check(_E)
Check(_F)
Lord Nelson
Messages : 355
Inscription : dim. 01/déc./2013 15:29

Re: L'oppérateur &

Message par Lord Nelson »

Oui j'ai pas compris :oops:

Ton code est bien et j’arrive pas à le déchiffrer :(
Je connais pas trop les macro, c'est puissant ça :)

Merci :)

Mais je sais pas si ça réponde à ma question :oops:
Ton truc ça marche pour une puissance de 2 *2:

1
2
4
8
16
32
64
128
256

Mais pas autres, par exemple de 0 à 255, si ?
Avatar de l’utilisateur
TazNormand
Messages : 1297
Inscription : ven. 27/oct./2006 12:19
Localisation : Calvados (14)

Re: L'oppérateur &

Message par TazNormand »

& signifie que l'on fait un ET logique, en clair il faut que les 2 valeurs soient vraies, si aucune ou une seule est vraie, alors le résultat est FAUX. Par vrai on entend en binaire égale à 1 :

1 & 1 vaut 1 = VRAI ==> les 2 conditions sont remplies
1 & 0 vaut 0 = FAUX ==> une seule des 2 conditions n'est remplie
0 & 0 vaut 0 = FAUX ==> aucune des 2 conditions n'est remplie

%1100 & %1010 = %1000 car (1&1=1; 1&0=0; 0&1=0; 0&0=0 ==> %1000)

Sincèrement, tu as de grosses lacunes en dév. de base, donc penche-toi d'abord sur les bases.
Image
Image
Lord Nelson
Messages : 355
Inscription : dim. 01/déc./2013 15:29

Re: L'oppérateur &

Message par Lord Nelson »

Ok merci bien :)
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: L'oppérateur &

Message par G-Rom »

Code : Tout sélectionner

#A = %0001
#B = %0010
#C = %0100
#D = %1000

#ALL = #A | #B | #C | #D
#A_D = #A | #D

Debug "#ALL = %" + Bin(#ALL)
Debug "#A_D = %" + Bin(#A_D)


If Not #A_D & #C
  Debug "#A_D n'a pas de #C"
EndIf
Répondre