Dziwna negacja w java

0

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

0

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.

0

To nasuwa sie kolejne pytanie, jest jakaś specjalna funkcja zmieniajac znak czy korzystac z negacji ( plus 1, oczywiscie).

0

ehh ;]

/* ja bym z tym uwazal... jeszcze jakas inkrementacja przy takiej ilosci wyjdzie ;) */

0

[green]

0

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1