Amikor egy változónak van egy adott mérete, akkor honnan lehet tudni, hogy azon belül, a szám, vagy szöveg konkrétan mennyi helyen van?
Pl., egy long long int értékét tudjuk. De ha csak a 7-es számot írjuk a változó után, akkor az nyilván sokkal kisebb helyen van rajta, mint amit a long long int tárolni tudna. Vagyis üres helyek vannak a változón belül.
Vagy string esetén, ha a stringet egyenlővé teszem egy hosszú szöveggel, akkor maga a hosszú szöveg mekkora helyen van rajta? Mondjuk egy oldalnyi szöveg mekkora helyet vesz el? Akkor string esetén 8 bittel kell karakterekként számolni?
Nincs kisebb helyen rajta.
Azért változó, mert nem tudja a program, hogy nem lesz a 7 értéke később egy bájtnál nagyobb helyigényű.
A boolean tipusok is egy bájton tárolódnak, vagy mindjárt négyen, pedig elég lenne hozzájuk egyetlen bit is.
Egy laza oldal ASCII kódolással kb. egy kilobájt.
"Vagy string esetén, ha a stringet egyenlővé teszem egy hosszú szöveggel, akkor maga a hosszú szöveg mekkora helyen van rajta? "
Ez programnyelv és tipusfüggő.
A C null terminált stringet használ, a Pascalnak sok tipusa van, de alapban 255 karakter hosszú lehet egy pascal string (1 char/byte +1 byte length), de lehet ennél rövidebb, saját tipus is, pl így:
mystring : string[12];
Ekkor egy string 13 bájtot foglal a memóriából, mert a 12 karakter (mystring[1]..[12]) egy-egy bájt, plusz a méret, ami a mystring[0] pozíción foglal helyet.
"után, akkor az nyilván sokkal kisebb helyen van rajta, mint amit a long long int tárolni tudna"
Nem, az akkor is ugyanakkora helyen fog tárolódni.
"Vagyis üres helyek vannak a változón belül."
Igen, a változó fel nem használt területe fel lesz töltve nullákkal. Ha a változód 64 bites, akkor az utolsó 8 bit tárolja a 7-est, a maradék 56 bit nulla lesz. Ha a változód 128 bites, akkor az utolsó 8 bit tárolja a 7-est, a maradék 120 bit nulla lesz.
Lehet én értelmezem rosszul a kérdést, de szerintem itt az alapokkal van baj (pl bináris számok és hasonlók), viszont javíts ki nyugodtan ha rosszul gondolnám.
Szóval programozásnál minden adatnak van egy előre meghatározott mérete, amit általában a programozó ad meg. Nyelvenként eltérőek ezek a méretek, de nagyjából szoktak hasonlítani.
Pl egy int 32bit szokott lenni, ami azt jelenti, hogy 32 darab nullásból vagy egyesből fog állni, hiszen ez egy 32 számjegyből álló bináris szám lesz. Bináris számoknál ugyan úgy, mint a tízes számrendszerben jobbról balra haladunk, szóval az "alsó" vagy "jobb oldali" számjegyeket kezdjük el használni, ugye mert azok a legkisebbek. Pl a tizenkettő tizes számrendszerben négy számjegyet felhasználva így nézne ki: 0012. Szóval igen a többi számjegy nulla, hiszen a szám "ábrázolására" nem használtuk fel őket.
String esetén karaktereket tárolunk egy tömbbe. Egy karakter mérete változó, ez attól függ, hogy milyen kódolási rendszert használunk. Ha egy karakter 8 bit, akkor utána csak szimplán szorozd meg a karakterek számát a szövegben (ide értve pl space is) 8-cal, és annyi biten fog tárolódni a szöveged (általában). A stringed neve az a legelső karakternek a címe lesz a memóriádban egyébként.
Ezek voltak a problémák? De kérdezz nyugodtan akár privátban is, ha itt félsz, hogy valami hülyeség lenne, egyszerűen így tanul az ember, nincsenek buta kérdések!:)
"Szóval programozásnál minden adatnak van egy előre meghatározott mérete"
Inkább csak a legtöbb adatnak.
"Pl egy int 32bit szokott lenni"
Vagy csak 16 bit "szokott lenni". Mert ilyen is van.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!