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