Bonjour a vous tous,
Voila je souhaite manipuler des unsigned char et faire des opérations dessus mais je rencontre pas mal de problème
Je souhaite soustraire un tableau d'unsigned char les uns avec les autres c'est a dire Xi - X(i-1)
Donc si les deux ne font pas de dépassement tout va bien, mais si la soustraction me donne un résultat négatif et que je le soustrait avec le suivant que dois je faire pour les le remettre en unsigned char? Faire un complement a deux?
Mes fonctions sont elles bien adaptées?
Le résultat que je vais trouver peut être sur n+1 bits, comment dois je faire pour le remettre sur n bits? avec un modulo 254?
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
31
32
33
34
35
36
37
38 typedef unsigned char uchar; enum {FALSE, TRUE}; int Bit(uchar x, int pos) { return (x>>pos)&1; } int Add(uchar x, uchar y) { uchar bx,by; int i=0, som =0; int ret = 0; while (i<(sizeof(char)*7)) { bx = Bit(x,i); by = Bit(y,i); som = som | (bx^by^ret)<<i; ret = (bx|by)&(bx|ret)&(by|ret); i++; } bx = Bit(x,i); by = Bit(y,i); return som; } int Sous(uchar x, uchar y) { y = Add(~y, 1); return Add(x, y); } int EstNegatif (uchar x) { if (Bit(x,8)==0) return FALSE; else return TRUE; }
Merci pour vos futures réponses
		
		
        




   


  Répondre avec citation


 
 
 
						
 

Partager