Page 1 sur 1

SET/RESET de n°bit indexé

Posté : 15 août 2021, 13:45
par itasoft
Slts,
J’ai pas trouvé de fonction pour faire le SET/RESET du n° Bit indexé dans un mot de 16 bits
Alors je me suis paluché les lignes de prog, si ça peut re-servir (même principe pour un 32 bits)

(*--SET/RESET d’un bit (n° 0à15 dans NUM_BIT) dans le mot %MW0 ---*)

(*élabore le masque*)
MSK:=1;MSK:=SHL(MSK,NUM_BIT);
(*SET du Bit*)
%MW0:=%MW0 OR MSK;
(*RESET du Bit*)
%MW0:=%MW0 XOR MSK;

Re: SET/RESET de n°bit indexé

Posté : 15 août 2021, 14:10
par MiGaNuTs
Pas con ton astuce. Attention cependant a etre sur que le bit en question est bien a 1 avant de le reseter, sinon c'est la surprise assurée.
%MW0:=%MW0 AND (NOT MSK); ca me parait plus "safe"

Re: SET/RESET de n°bit indexé

Posté : 15 août 2021, 14:52
par itasoft
MiGaNuTs a écrit : 15 août 2021, 14:10 Pas con ton astuce. Attention cependant a etre sur que le bit en question est bien a 1 avant de le reseter, sinon c'est la surprise assurée.
%MW0:=%MW0 AND (NOT MSK); ca me parait plus "safe"
---------------
c'est juste, bien vu, bravo
-------
Mise à jour
(*élabore le masque*)
MSK:=SHL(1,NUM_BIT);
(*SET du Bit*)
%MW0:=%MW0 OR MSK;
(*RESET du Bit*)
%MW0:=%MW0 AND (NOT MSK);

à force de simplifier il va plus rien rester, lol