operation binaire en C .... - Programmation
Marsh Posté le 31-01-2001 à 22:11:15
merci .. et ca fonctionne comment ?? 
 
ex : moi j'ai : 
 
char Filtre(char octet) 
{.... 
 return octet; 
} 
 
les .... representant le decalage vers la droite
Marsh Posté le 31-01-2001 à 22:54:17
Dans ta question, tu demandes un decalage vers la droite d'un octet et tu donnes comme exempless
 
1001 1101 ----> 1100 1110.ss
 
Je pense que tu as voulu dire un décalage de 1 bit vers la droite. 
 
En c effectivement on peut faire trs facilement ca. 
 
tu decales de x bits vers la gauche (<< ) ou droite (>> ) mais seulement lors du decalage, ca rajoute des 0 et pas des 1 , alors si tu veux des 1 il va falloir utiliser un masque en plus. 
 
1001 1101ss>> 1 donne 0100 1110ss
ssssssssssssss et non 1100 1110 
 
ainsi 8 >> 2 ( qui correspond à divisé par 4) donne 2 
 
soitss
0000 1000 >> 2 donne 0000 0010
Marsh Posté le 31-01-2001 à 23:42:05
char filtre(char octet) 
{ 
ssssreturn (octet>>1); 
} 
 
Comme Xilebo le fait remarquer, ça te rajoutera un zéro en bit de poids fort (le + à gauche)
Marsh Posté le 01-02-2001 à 09:38:53
on peut faire : 
char filtre(char octet) 
{ 
return((octet>>1)|0x80); 
} 
 
ça me semble pas mal, mais ça fait un peu bricolage 
Marsh Posté le 01-02-2001 à 11:47:20
dans mes souvenirs... jespere que je confond pas les languages  
 
 
il me semble qu'il existe les fonctions: shiftleft et shiftright 
 
enfin le nom excate jsais plus trop...
Marsh Posté le 31-01-2001 à 21:49:17
comment fait on en C une operation binaire?
je souhaite un decalage vers la droite sur un octet
soit par ex 1001 1101 ----> 1100 1110.
en ASM no problem mais en C ???