Unsigned char and char

Hardware, software, mobiteli, programiranje, internet...

Moderator: Benq

Post Reply
User avatar
kriticarka_nikova
Posts: 2669
Joined: 04/02/2006 23:30

#1 Unsigned char and char

Post 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......
_BosanaC
Posts: 8428
Joined: 16/08/2005 14:02
Location: Sarajevo
Contact:

#2

Post 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.
Yag
Posts: 1
Joined: 04/07/2004 16:16

#3

Post by Yag »

heheeh, jel se to raja s etf.a okupila ili.....???
User avatar
kriticarka_nikova
Posts: 2669
Joined: 04/02/2006 23:30

#4

Post by kriticarka_nikova »

Bosanac nisam bas zadovoljna objasnjenjem..... :-?
_BosanaC
Posts: 8428
Joined: 16/08/2005 14:02
Location: Sarajevo
Contact:

#5

Post 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.
User avatar
kriticarka_nikova
Posts: 2669
Joined: 04/02/2006 23:30

#6

Post 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 :-)
neko iz mase
Posts: 2018
Joined: 29/12/2004 21:18

#7

Post 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
_BosanaC
Posts: 8428
Joined: 16/08/2005 14:02
Location: Sarajevo
Contact:

#8

Post 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.
neko iz mase
Posts: 2018
Joined: 29/12/2004 21:18

#9

Post by neko iz mase »

sa platformama sam vise mislio na razlicite vrste procesora kao x86, risc, arm itd
Post Reply