Page 1 of 1

#1 Unsigned char and char

Posted: 13/02/2006 09:59
by kriticarka_nikova
Ovako....Imate neki zadatak...npr.9-17 (decimalni broj).U zadatku su vam postavili unsigned char ili char .U cemu je razlika ako postave unsigned char ili samo char????
Jasno mi je da se ona dva gore navedena broja pretvaraju u binarne,malo me zeza komplement i vrlo cesto se zbunim ne znam koliko cifra dodati nekom broju....
Evo primjer:
9 kad pretvoris u binarno je 1001,eh onda slijedi kompelment (kojeg broja????) a zanima me i to koliko cifra da dodam ispred 1001,kako to da znam???
Ajmo programeri......

#2

Posted: 13/02/2006 10:06
by _BosanaC
Kod unsigned char duplira ti vrijednost koju bi inace tip char rezervisao u memoriji. Naravno, mozes to rijesiti i alocirajuci memoriju s operatorom new, samo ne zaboravi to kasnije unistiti sa delete.

#3

Posted: 13/02/2006 10:14
by Yag
heheeh, jel se to raja s etf.a okupila ili.....???

#4

Posted: 13/02/2006 10:15
by kriticarka_nikova
Bosanac nisam bas zadovoljna objasnjenjem..... :-?

#5

Posted: 13/02/2006 10:22
by _BosanaC
kriticarka_nikova wrote:Bosanac nisam bas zadovoljna objasnjenjem..... :-?
Ovako... Kada kazes

char text;

rekla si u stvari kompajleru da ce varijabla "text" prihvatati alfanumericke znakova u duzini od 8 bajta (po ANSI standardu). Ti pravis program koji pretvara decimalne brojeve u binarne, znaci tvoj rezultat ce se sastojati od nula i jedinica i smjestice se u tu varijablu tekst (zasto se ne smjesta u int? Zato sto je maksimalna vrijednost za int +-32768 odnosno unsigned int 32768 * 2) dok char moze znaci prihvatiti vrijednost 11111111 (sto je ekvivalent decimalnom 255) a unsigned char (sto ce onih 8 bajta podici na 16) znaci da ce tvoj program prihvatati ekvivalent za decimalnu vrijednost
131068 (sto je dva puta vece od unsigned int).

Ovo je bilo najkrace sto je moglo, ako ti ni ovo ne pomogne pisi sta ti konkretno nije jasno.

#6

Posted: 13/02/2006 10:36
by kriticarka_nikova
_BosanaC wrote:
kriticarka_nikova wrote:Bosanac nisam bas zadovoljna objasnjenjem..... :-?
Ovako... Kada kazes

char text;

rekla si u stvari kompajleru da ce varijabla "text" prihvatati alfanumericke znakova u duzini od 8 bajta (po ANSI standardu). Ti pravis program koji pretvara decimalne brojeve u binarne, znaci tvoj rezultat ce se sastojati od nula i jedinica i smjestice se u tu varijablu tekst (zasto se ne smjesta u int? Zato sto je maksimalna vrijednost za int +-32768 odnosno unsigned int 32768 * 2) dok char moze znaci prihvatiti vrijednost 11111111 (sto je ekvivalent decimalnom 255) a unsigned char (sto ce onih 8 bajta podici na 16) znaci da ce tvoj program prihvatati ekvivalent za decimalnu vrijednost
131068 (sto je dva puta vece od unsigned int).

Ovo je bilo najkrace sto je moglo, ako ti ni ovo ne pomogne pisi sta ti konkretno nije jasno.
Super.Danke :-)

#7

Posted: 13/02/2006 18:17
by neko iz mase
BS sa duplanjem!

pocevsi od osnove, definicija char: integer koji oznacava jedno od slova. Znaci, u sustini je unsigned char broj izmedju -127 i 127. Ako koristis signed char, ovaj range ti je od 0 - 255. problem je sto neke platforme i kompajleri koriste signed char (x86) a neke unsigned. To znaci da isti program nece raditi na isti nacin na dvije razlicite OS platforme. Takodje stvara problem ako koristis numericke operacije nad slovima (ko to vec zeli da radi), jer se izmjenjuje citav interval. sa citavom konverzijom u binarne to bas i nema neke veze. Ima jos par primjera, a najbolji ti je na
http://www.network-theory.co.uk/docs/gc ... ro_71.html

#8

Posted: 14/02/2006 09:38
by _BosanaC
neko iz mase wrote:BS sa duplanjem!

pocevsi od osnove, definicija char: integer koji oznacava jedno od slova. Znaci, u sustini je unsigned char broj izmedju -127 i 127. Ako koristis signed char, ovaj range ti je od 0 - 255. problem je sto neke platforme i kompajleri koriste signed char (x86) a neke unsigned. To znaci da isti program nece raditi na isti nacin na dvije razlicite OS platforme. Takodje stvara problem ako koristis numericke operacije nad slovima (ko to vec zeli da radi), jer se izmjenjuje citav interval. sa citavom konverzijom u binarne to bas i nema neke veze. Ima jos par primjera, a najbolji ti je na
http://www.network-theory.co.uk/docs/gc ... ro_71.html
Ako se drzis ANSI standarda onda nema problema sa platformama. Ja licno pisem programe na WinXP, koji se poslje toga portaju na *nix i na kraju na Solaris, i sa tipovima nikada nisam imao nikakvih problema, naravno, opet napominjem, ako se eksplicitno ili dinamicki odredi kolicina rezervisane memorije.

#9

Posted: 14/02/2006 16:17
by neko iz mase
sa platformama sam vise mislio na razlicite vrste procesora kao x86, risc, arm itd