C++-ban miért egy bájtos a karakter típus, ha az ascii tábla az egy bájtnak csak a felét teszi ki?
Az első - 0-127 - karakter az mindig egyforma. Ugye ez 7 bit. Akkor a maradék egy bittel mit kezdesz ? Fogod és így lesz szépen egy 0-255 terjedő táblázatod.
Az értelmezésed is rossz mivel 1 byte az 8 bit annak a fele - 4 bit - 16 és nem 128.
A karakter típus btw nem 1 byte. A valódi mérete implementációfüggő. A korrekt megfogalmazás, hogy a C++ a char méretét tekinti 1 byte-nak, és ez az alapegység más típusok/objektumok méretének meghatározásához.
A valóságban lehet, hogy a char típus 2 byte-on tárolódik, ez esetben a C++ a 2 byte-ot fogja 1-nek tekinteni. A char mérete az alapegység.
És hogy miért lenne a char 2 byte, mikor az ASCII tábla egy bytenak 'csak a felét teszi ki'?
Egyfelől az alap ASCII tábla 128 karakterből áll, ami 7 biten fér el, tehát picit több, mint egy fél byte. Másfelől ehhez jönnek még a speciális karakterkészletek, ami a 128-255 helyeket töltik fel (ezek ugye a nyelv/területspecifikus karakterek szoktak lenni), tehát az ASCII kódolás is kihasználja végső soron azt az 1 byte-ot. Na de az igazi kérdés, miért lenne a char akár 2 byte, ha 1 byte-on elfér minden? Mert létezik olyan fogalom, hogy legkisebb címezhető memóriaterület, amit a processzor architektúrája határoz meg. Lehet, hogy egy processzor minimum 2 byte-os memóriaterületeket tud csak címezni, ez esetben nincs az a jó ég, hogy 1 byte-on tárolj valamit (technically lehet ezzel ügyeskedni, de nagyon hack kategória, és rendszerint fölösleges).
Hozzáteszem,a gyakorlatban a legtöbb (nem mind, de a legtöbb) processzor valóban 1 byte-ot tud címezni.
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!