Kezdőoldal » Számítástechnika » Programozás » C++-ban miért egy bájtos a...

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?

Figyelt kérdés

2016. máj. 19. 16:52
 1/10 SimkoL ***** válasza:
Talán gondold át még egyszer a kérdést.
2016. máj. 19. 17:04
Hasznos számodra ez a válasz?
 2/10 anonim ***** válasza:
Mert a gép által kezelhető legkisebb egység az 1 bájt.
2016. máj. 19. 17:05
Hasznos számodra ez a válasz?
 3/10 SimkoL ***** válasza:

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.

2016. máj. 19. 17:13
Hasznos számodra ez a válasz?
 4/10 tabaki ***** válasza:
Én nyitottabban állok a friss ötletekhez: Oké, szerinted mekkora legyen?
2016. máj. 19. 19:44
Hasznos számodra ez a válasz?
 5/10 anonim ***** válasza:

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.

2016. máj. 20. 16:38
Hasznos számodra ez a válasz?
 6/10 SimkoL ***** válasza:
'A karakter típus btw nem 1 byte.' A char 8 bit. Vannak ettől eltérő típusok, de azoknak más a 'neve'.
2016. máj. 20. 19:40
Hasznos számodra ez a válasz?
 7/10 anonim ***** válasza:
A char pontosan 1 byte, és legalább 8 bit. Tehát lehet 16, 24, 32 bit és még sok más is.
2016. máj. 20. 21:16
Hasznos számodra ez a válasz?
 8/10 anonim ***** válasza:
A char legalább 8 bit méretű, de nincs megkötés rá. Most az nézőpont kérdése szerintem, hogy a char-ra mondjuk azt, hogy nem fixen 1 byte, vagy a bytera mondjuk azt, hogy nem fixen 8 bit. A hivatalos terminológia az utóbbit erősíti meg, de általánosan az van beégve az emberek agyába, hogy 8bit = 1 byte. Így mikor azt mondtam, hogy a char nem 1 byte, azt úgy értettem, hogy egy byteot fixen 8 bitnek tekintünk.
2016. máj. 20. 21:35
Hasznos számodra ez a válasz?
 9/10 anonim ***** válasza:
Azért írtam mert a sizeof(char) mindig 1 lesz, és a sizeof definíciója: "The sizeof operator yields the number of bytes in the object representation of its operand."
2016. máj. 20. 22:48
Hasznos számodra ez a válasz?
 10/10 anonim ***** válasza:
Én úgy tekintek rá, hogy a C++ egy 'absztrakt' byte-al számol, ami a tényleges byte méretétől eltérhet... mint mondtam, nézőpont kérdése.
2016. máj. 21. 03:12
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!