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
Partager