Witam
Kompilator C18.
Mam liczbę int, która jest ujemna i chce ją przesunać o 4 miejsca w lewo:
Przeczytałem gdzies że jak liczba jest ze znakiem to dopełnienie jest takie jak bit mówiacy o tym czy liczba jest dodatnia (0) lub ujemna (1) lub tylko zerami w zależnosci od kompilatora. Kompilator do PC-ta dopełnia taką wartością jaki jest znak, a C18 zawsze niestety zerami.
Samo przesuniecie jest ok, tylko, że 4 starsze bity zostały dopełnione zerami, a chciałbym żeby były jedynkami, jak to zrobić?
pozdrawiam
tomek
Kompilator C18.
Mam liczbę int, która jest ujemna i chce ją przesunać o 4 miejsca w lewo:
int a=-34;
long b;
b=(long)a>>4;
Przeczytałem gdzies że jak liczba jest ze znakiem to dopełnienie jest takie jak bit mówiacy o tym czy liczba jest dodatnia (0) lub ujemna (1) lub tylko zerami w zależnosci od kompilatora. Kompilator do PC-ta dopełnia taką wartością jaki jest znak, a C18 zawsze niestety zerami.
Samo przesuniecie jest ok, tylko, że 4 starsze bity zostały dopełnione zerami, a chciałbym żeby były jedynkami, jak to zrobić?
pozdrawiam
tomek