Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Reprezentacija brojeva

[es] :: C/C++ programiranje :: Reprezentacija brojeva

[ Pregleda: 2179 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Aleksa Stankovic

Član broj: 147264
Poruke: 38
212.200.65.*



Profil

icon Reprezentacija brojeva23.07.2008. u 17:30 - pre 191 meseci
Napisao sam program koj pokazuje da je int zapravo niz od cetiri char-a. Iako nema neku upotrebnu funkciju, smatram da je zanimljiv pa sam resio da ga objavim. Sustina je da se moze uociti povezanost svakog od 4 char-a koji cine int(u zavisnosti od unesenog broja), tj pokazuje unutrasnju reprezantaciju tipa int.

Code:


#include <iostream>
#include <new>
using namespace std;
int main()
{
    string res;
    do
    {
    cout << "unesite broj:\n";
    int broj;
    cin >> broj;
    cout << "\n\n";
    
    char *m=new char[sizeof(int)];
    int *a=new (m) int(broj);
    for(int i=0; i<sizeof(int); i++)
    std::cout << (int)m[i] << "\n";
    cout << "\nZelite li da izadjete([da][ne])\n"  ;
    (cin >> res);
    } while ( res=="ne");
    
    return 0;

}



[Ovu poruku je menjao Aleksa Stankovic dana 23.07.2008. u 20:48 GMT+1]
 
Odgovor na temu

itf
Zagreb

Član broj: 59794
Poruke: 993
*.adsl.net.t-com.hr.



+9 Profil

icon Re: Reprezentacija brojeva23.07.2008. u 19:15 - pre 191 meseci
(long) int se sastoji od 4 bajta, a char od samo jednog pa je i logično da "trebaju" 4 char-a za takav int. no opet, pogrešno je reći da je int zapravo niz od cetiri char-a. može ga se tako interpretirati, no po definiciji (long) int je cijeli broj od 4 bajta.
 
Odgovor na temu

kiklop74
Darko Miletić
Buenos Aires

Član broj: 78422
Poruke: 569
*.fibertel.com.ar.

Sajt: ar.linkedin.com/pub/darko..


+13 Profil

icon Re: Reprezentacija brojeva23.07.2008. u 22:57 - pre 191 meseci
Svaki tip u C/C++-zauzima određenu količinu memorijskog prostora (kao uostalom i u većini programskih jezika).

Bajt je sekvencijalni niz bitova konstantne (unapred predodređene) veličine. Na najvećem broju sistema ova predodređena veličina je 8, ali je to tako zato što je 70-tih i 80-tih vladalo carstvo 8-bitnih procesora u širokim narodnim masama pa se to pretvorilo u neki sinonim.

Bajt je takođe i najmanji mogući deo računarske reči (word) nad kojim je moguće izvršiti neku operaciju. Word je stvar dizajna nekog procesora i upravo po tome imamo različite procesore (4-bit, 16-bit. 32-bit, 64-bit itd.) koji u stvari predstavljaju veličinu reči.

Zbog čega ceo ovaj uvod?

Zato što na kraju krajeva C odnosno C++ operiše sa parčetom memorije. Šta se nalazi u tom parčetu memorije nije toliko značajno jer se lako da promeniti prostim kastovanjem.

Na primer:

Code:

int test = 6381921; //0x00616161


U memoriji je predstavljen sa 4 bajta na 32-bitnim sistemima. U slučaju da ne znamo veličinu tipa možemo da koristimo sizeof:

Code:

std::cout << sizeof(test) << std::endl;



promenjiva test u memoriji sistema je predstavljena ovako:

1 bajt 2bajt 3bajt 4bajt
01100001 01100001 01100001 00000000

Ako sada promenimo tip koji pokazuje na tu adresu u char dobijamo klasican C string.
Code:

char *nesto = (char*)&test;
std::cout << nesto << std::endl;


ovaj kod ce da ispise aaa zato sto u memoriji vidi tri bajta koji u sebi imaju vrednost ascii 97 i cetvrti 0 koji predstavlja zavrsetak standardnog c stringa.

Ovo ne znaci da je char int ili da je int skup karaktera. Ovo samo pokazuje kako se moze pristupiti memoriji na razlicite nacine jer jezik operiše direktno nad memorijom.

Tko leti vrijedi
 
Odgovor na temu

deerbeer
Beograd

Član broj: 174418
Poruke: 1189
*.adsl-1.sezampro.yu.



+395 Profil

icon Re: Reprezentacija brojeva24.07.2008. u 12:51 - pre 191 meseci
http://www.fredosaurus.com/notes-cpp/expressions/bitops.html
Imas na ovom linku konkretnu primenu kako da pomocu bitwise operatora pakujes vise promenljivih u jednu
tako da mozes cak celu strukturu da zapises u jedan int broj

EDIT:
http://www.postech.ac.kr/class/cs103/2008/materials/Lec05.pdf
Viva lollapalooza
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.dynamic.sbb.rs.



+2790 Profil

icon Re: Reprezentacija brojeva01.08.2008. u 10:41 - pre 191 meseci
Zainteresovani za floating problematiku mogu da posete advocacy

http://www.elitesecurity.org/t303962-0#1811310
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

[es] :: C/C++ programiranje :: Reprezentacija brojeva

[ Pregleda: 2179 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.