unsigned and signed int

unsigned and signed int

offline
  • igor86  Male
  • Stručni saradnik
    Web programiranje
  • Pridružio: 24 Maj 2006
  • Poruke: 1633

Zanima me kakav je nacin zapisivanja brojeva u unsigned int tip-u.

Posto je u obicnom (signed) int prvi bit 0 dok je broj pozitivan, a kada je negativan prvi bit je 1, a ostatak smanjen za 1 pa invertovan.

Zanimljiv primjer koji kaze False.

int main(){ unsigned int a = 5; signed int b = -1; if(b <= a) printf("True"); else printf("False"); }



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 17 Mar 2004
  • Poruke: 293
  • Gde živiš: UK

Citat:Zanima me kakav je nacin zapisivanja brojeva u unsigned int tip-u.

Rachunash svaki bit onako kako je zapisan, nema komplementa.

Kada uporedjujesh signed i unsigned vrednosti prvo ce te kompajler upozoriti a onda ce interno pretvoriti signed u unsigned (tj. svi bitovi postavljeni na 1), tako da je na kraju b > a



offline
  • Software developer
  • Pridružio: 06 Sep 2005
  • Poruke: 3800
  • Gde živiš: Beograd

Kvalifikatori signed i unsigned se mogu primeniti na char ili bilo koji integer. unsigned brojevi su uvek pozitivni ili nula, i nad njima se primenjuju
aritmeticka pravila po modulu 2n, gde je n broj bita tipa. Prema tome, na
primer, ako je char 8 bita, promenljiva unsigned char ima vrednosti iz inter-
vala od 0 do 255, dok signed chars ima vrednosti izmedu -128 i 127 (na masini
koja radi u drugom komplementu).

Pravila za konverziju su malo komplikovanija kada su neoznaceni operandi
ukljuceni. Problem je u tome sto je odnos izmedj u onacenih i neoznacenih
brojeva razlicit na razlicitim masinama, zbog toga sto zavise od razlicitih velicina
tipa int. Na primer neka je tip int velicine 16 bitova, pa je onda long 32 bita.
Onda -1L < 1U, zato sto 1U, koji je unsigned int, postaje unsigned long. Ali
-1L > 1UL zato sto je -1L pretvoren u unsigned long sto je u stvari ogroman
pozitivan broj.

Dopuna: 01 Apr 2008 10:12

tako i kod tebe, kada se -1 pretvori u unsigned, iznosice neki pozitivan broj veci od 5

Ko je trenutno na forumu
 

Ukupno su 1030 korisnika na forumu :: 15 registrovanih, 4 sakrivenih i 1011 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: Azzo, bakovaca, Bobrock1, Bojan85, bojcistv, d.arsenal321, darkkran, Folkstar, kaskadija, Mldo, Naj-Turs, S94, sedan, suton, vladaa012