Отговорът е: един байт е 8 бита, а променлива от char е един байт, но със знак т.е също е 8 бита. Да, но не във всички случай.
Колко бита е един байт?
8 бита? Верният отговор е – “зависи”.
За да разберем защо това е така, преди това трябва да си отговорим на друг въпрос …
Какво е байт?
Байтът е единица цифрова информация, която най-често се състои от осем бита. В исторически план байтът е броят на битовете, ползвани за кодиране на един символ на текст в даден компютър и поради тази причина той е най-малката адресируема единица памет в много компютърни архитектури.
В миналото, размерът на байта е бил зависим от хардуера и не са съществували стриктни стандарти, които да налагат размера. Използвани са размери от 1 до 48 бита.
Няколко примера:
- Миникомпютрите от серията PDP на DEC са ползвали байт с размер 6, 7, 8, 9 и 10 бита в зависимост от модела. Реф.: https://en.wikipedia.org/wiki/Programmed_Data_Processor
- Хипотетичния компютър MIX на Доналд Кнут е с размер на байта 6 бита. Реф.: https://en.wikipedia.org/wiki/MIX
- Има компютри с 4-битова архитектура, които определят байт с размер 4 бита.
В днешно време е прието, че в повечето случаи, един байт се състои от 8 бита.
Реф.: https://en.wikipedia.org/wiki/Byte
За да се избегне двусмислието на термина байт се е появил термин, който изрично определя размера си от 8 бита – октет.
Какво е октет?
Октетът е единица цифрова информация в изчислителната и телекомуникационната техника, която се състои от осем бита. Терминът често се използва, когато терминът байт може да бъде двусмислен, когато става дума за размера му в битове.
В терминологията на Интернет протоколите се използва предимно думата октет.
Реф.: https://en.wikipedia.org/wiki/Octet_(computing)
Какъв е размер на типът char в езика C
8 бита? Верният отговор е – “зависи”.
За да разберем защо това е така, преди това трябва да си отговорим на друг въпрос …
Какво е char?
Един char е най-малката адресируема единица на машината, която може да съдържа основен набор от символи. Това е цяло число. Действителният тип може да бъде със знак или без знак.
Реф.: https://en.wikipedia.org/wiki/Character_(computing)
Какво значи това?
Ако най-малката по размер клетка от паметта, която микропроцесора може да адресира е 8 бита, то тогава chat ще е също 8 бита. Това е архитектурата с която повечето от нас са свикнали. Ако микропроцесора обаче адресира клетките от паметта по 16-бита, т.е. на определен адрес можем да прочетем 16 бита, а на следващия адрес други 16 бита (има такива архитектури) то тогава char ще е 16 бита.
За да сме сигурни колко бита е един байт трябва да проверяваме дефиницията CHAR_BIT.
Реф.: https://en.wikipedia.org/wiki/C_data_types
Стандарта POSIX определя изрично, че размера на char е точно 8 бита.
Пример за 16 битов char: DSP процесорите на Texas Instruments от серията TMS320C55x работят с 16-битова памет, т.е. Четенето от определен адрес дава 16-бита данни. По тази причина char е с размер 16 бита. Реф.: “TMS320C55x Optimizing C/C++ Compiler”, https://www.ti.com/lit/ug/spru281g/spru281g.pdf
Колко бита е един байт и колко байта е типът char в езика C?
За най-популярните микропроцесорни архитектури в днешно време можем спокойно да приемем, че размера на един байт е 8 бита и размера на типа char в езика c е 1 байт, но не трябва да забравяме, че това не е така във всички случаи.
Реф.: https://en.wikipedia.org/wiki/Word_(computer_architecture)