ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
19 июля
1351248 Топик полностью
74ALS (15.09.2023 12:16, просмотров: 123) ответил POV на Можно ссылку на первоисточник? Ибо бит, байт - это объём памяти. Байт - 8 бит. К типу, например, char слово "байт" не относится.
В стандарте С90 в третьей главе вводятся некоторые определения используемые в дальнейшем. 

3.4 BYTE --- the unit of data storage in the execution environment large enough to hold any member of the basic character set of the execution environment. It shall be possible to express the address of each individual byte of an object uniquely. A byte is composed of a contiguous sequence of bits, the number of which is implementation-defined.

3.5 CHARACTER --- A bit representation that fits in a byte. The representation of each member of the basic character set in both the source and execution environments shall fit in a byte.


Насколько я понимаю, термин BYTE относится к организации памяти. А character к представлению типа данных char. Память данных абстрактной машины С имеет по сути плоскую модель (массив БАЙТ). Символьный тип char включает базовое множество символов среды исполнения (например машины с наборами ASCII или EBCDIC). Представления значений данного типа char - это character (по стандарту), т.е. битовый паттерн который кодирует каждый символ, должен размещаться в БАЙТЕ памяти данных абстрактной машины C.


Ну в принципе я нагуглил уже дополнительную информацию. По сути получается стандарт языка С идет в двух документах:

1. Непосредственно сам стандарт языка С

2. Rationale к стандарту - то бишь логическое обоснование почему то или иное решение стандарта было выбрано именно таким Техническим Комитетом по стандартизации языка C.


В Rationale в частности эту тему раскрывают с примерами:

• All objects in C must be representable as a contiguous sequence of bytes, each of which is at least 8 bits wide.

• A char (or signed char or unsigned char) occupies exactly one byte.

(Thus, for instance, on a machine with 36-bit words, a byte can be defined to consist of 9, 12, 18, or 36 bits, these numbers being all the exact divisors of 36 which are not less than 8.)


Я прочитал есть в природе так называемые word-addressing процессоры, они адресуют память сугубо словами. И как бы там естественным образом вытекает для реализации компилятора C что sizeof(char) = sizeof(int) = 1, если не извращаться при реализации компилятора.