Witam czy ktoś wie dlaczego gdy pisze cos takiego
int a=-10;
a=~a;
to mi wychodzi że a = 9 a nie 10, zawsze wynik negacji jest o jeden mniejszy niz liczba przeciwna do podanej. Ktos wie dlaczego. ?.
Witam czy ktoś wie dlaczego gdy pisze cos takiego
int a=-10;
a=~a;
to mi wychodzi że a = 9 a nie 10, zawsze wynik negacji jest o jeden mniejszy niz liczba przeciwna do podanej. Ktos wie dlaczego. ?.
Zapisujac na 8 bitach w U2, liczbe -10 otrzymujemy:
11110100 = -127+12</sup>6+125+12</sup>4+023+12</sup>2+021+02</sup>0
Jezeli dokonamy bitowego NOT otrzymujemy
00001011 = 027+02</sup>6+025+02</sup>4+123+02</sup>2+121+12</sup>0 = 9
~ to operator negacji, a nie zmiany znaku. Jezeli chcesz na liczbie w systemie U2 dokonac zmianym znaku musisz zanegowac ja i dodac do niej jeden.
To nasuwa sie kolejne pytanie, jest jakaś specjalna funkcja zmieniajac znak czy korzystac z negacji ( plus 1, oczywiscie).
ehh ;]
/* ja bym z tym uwazal... jeszcze jakas inkrementacja przy takiej ilosci wyjdzie ;) */
[green]
To nasuwa sie kolejne pytanie, jest jakaś specjalna funkcja zmieniajac znak czy korzystac z negacji ( plus 1, oczywiscie).
Nie pisze w Javie, no ale moze tak mozna:
a = -a;
albo ostatecznie
a= (-1)*a;
Tak po matematycznemu :).
(?)
pzdrv.