Prikaz jedne poruke
Stara 25.7.2016, 22:58   #9
NEWSWEETTOFFEE
Član
 
Član od: 3.5.2012.
Poruke: 45
Zahvalnice: 16
Zahvaljeno 2 puta na 2 poruka
Određen forumom Re: C jezik: Problem pri izračunavanju broja jedinica u zapisu celih brojeva

Citat:
voodoo_ kaže: Pregled poruke
Problem možeš da rešiš tako što ćeš da "zezneš" kompajler i broj prethodno kastuješ u unsigned (odnosno kažeš mu da memorijsku lokaciju X tretira kao unsigned int):

Kod:
int brojBita(int x)
{
    unsigned int ux = (unsigned int) x;
    int broj = 0;
    while (ux) {
        if (ux & 0x1) {
            broj++;
        }
        ux >>= 1;
    }

    return broj;
}
Ovo sam probao i daje tačan rezultat, ali mi nije jasno kako. Zar se, jednostavno, promenljivoj ux ne doda nenegativna vrednost i onda je njen binarni zapis, zapis za pozitivne brojeve i nulu (mada koliko znam i nula se može zapisati u komplementu dvojke)?

Što se tiče prvog saveta, kada sam dodao printf, ako bih funkciji dao negativan broj, samo sam dobijao ispis sa osam f-ova, i to unedogled. Da li je to trebalo da bude tako?
NEWSWEETTOFFEE je offline   Odgovor sa citatom ove poruke