Bonsoir,
j'ai un byte dont je voudrai forcer le 5 bit à 0
par exemple 108 me donnerai 100 01101100 donne 01100100
et bien sur 01100100 resterait 01100100 !
John
J'ai, essaye des XOr et And sans succes
Bonsoir,
j'ai un byte dont je voudrai forcer le 5 bit à 0
par exemple 108 me donnerai 100 01101100 donne 01100100
et bien sur 01100100 resterait 01100100 !
John
J'ai, essaye des XOr et And sans succes
Une petite précision :
Le premier bit d'un nombre, c'est clui qui est à droite !!!
Donc en fait ce que tu veux c'est mettre à 0 le bit 3 (si on commence au bit de poids faible = bit 0)...
Un Nbr and 11110111 donc... Mais comme en Delphi on ne peut pas représenter de nombre binaire, faut que tu le convertisses en hexa ou en décimal !
11110111 en hexa, ça fait : $F7
Donc tu auras :
Bonne prog' !
Code : Sélectionner tout - Visualiser dans une fenêtre à part NewVal := Val and $F7;
Bestiol.
Mea est trop forte, elle flotte : mea coule pas !
Basically this boot sector (Win95) code is 32 bit extension for a 16 bit patch to an 8 bit boot sector originally coded for a 4 bit microprocessor, written by a 2 bit company, that can't stand 1 bit of competition.
olance.developpez.com
Servez-vous, profitez, abusez de la FAQ Delphi !!
En réalité de viens de chez Motorola alors pour moi le bit de fauche est le zéro
Mais on ne va pasz refaire la guerre aux indiens!
John
Ah ok, désolé !
Enfin le principe reste le même !![]()
Mea est trop forte, elle flotte : mea coule pas !
Basically this boot sector (Win95) code is 32 bit extension for a 16 bit patch to an 8 bit boot sector originally coded for a 4 bit microprocessor, written by a 2 bit company, that can't stand 1 bit of competition.
olance.developpez.com
Servez-vous, profitez, abusez de la FAQ Delphi !!
V'là tout ce qu'il te faut :
Bien sûr, on peut encore optimiser avec de l'assembleur inline, mais bon, c'est pas forcément nécessaire sauf si la vitesse d'exécution est primordiale.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 // Calcule un masque binaire (Rank entre 0 et 31). Function Mask ( Rank : Integer ) : Cardinal ; Begin Result:=1 Shl Rank ; End; // Positionne le bit de rang Rank dans le mot Val, renvoie le résultat. Function SetBit ( Val : Cardinal ; Rank : Integer ) : Cardinal ; Begin Result:=Val Or Mask(Rank); End; // Annule le bit de rang Rank dans le mot Val, renvoie le résultat. Function ClrBit ( Val : Cardinal ; Rank : Integer ) : Cardinal ; Begin Result:=Val And (Not Mask(Rank)); End; // Inverse le bit de rang Rank dans le mot Val, renvoie le résultat. Function NegBit ( Val : Cardinal ; Rank : Integer ) : Cardinal ; Begin Result:=Val Xor Mask(Rank); End; // Teste le bit de rang Rank dans le mot Val, renvoie True s'il vaut 1, False sinon. Function TstBit ( Val : Cardinal ; Rank : Integer ) : Boolean ; Begin Result:=(Val And Mask(Rank))<>0; End;
Mac LAK.
___________________________________________________
Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.
Sources et composants Delphi sur mon site, L'antre du Lak.
Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.
Rejoignez-nous sur : ► Serveur de fichiers [NAS] ► Le Tableau de bord projets ► Le groupe de travail ICMO
Partager