единица памяти С++
От: Hard_Club  
Дата: 04.03.15 17:04
Оценка: -1
Какая базовая единица памяти написана в стандарте — 1 байт или sizeof(char)?
Re: единица памяти С++
От: Кодт Россия  
Дата: 04.03.15 17:38
Оценка:
Здравствуйте, Hard_Club, Вы писали:

H_C>Какая базовая единица памяти написана в стандарте — 1 байт или sizeof(char)?


sizeof(char) == 1 по определению.
Перекуём баги на фичи!
Re: единица памяти С++
От: Abyx Россия  
Дата: 04.03.15 18:05
Оценка: +2
Здравствуйте, Hard_Club, Вы писали:

H_C>Какая базовая единица памяти написана в стандарте — 1 байт или sizeof(char)?


Родина дала тебе стандарт. Открой стандарт, прочитай первый раздел главу 1.7 первое предложение — будешь знать что тебе надо.
В чем твоя проблема?!
In Zen We Trust
Re[2]: единица памяти С++
От: LaptevVV Россия  
Дата: 04.03.15 18:15
Оценка: +1 -3
H_C>>Какая базовая единица памяти написана в стандарте — 1 байт или sizeof(char)?
К>sizeof(char) == 1 по определению.
Все-таки ты б ему уточнил, что 1 (один) в данном случае не 1 байт, а 1 char, который может и несколько байтов занимать на самом деле...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[3]: единица памяти С++
От: _NN_ www.nemerleweb.com
Дата: 04.03.15 18:46
Оценка: 1 (1) +3
Здравствуйте, LaptevVV, Вы писали:

H_C>>>Какая базовая единица памяти написана в стандарте — 1 байт или sizeof(char)?

К>>sizeof(char) == 1 по определению.
LVV>Все-таки ты б ему уточнил, что 1 (один) в данном случае не 1 байт, а 1 char, который может и несколько байтов занимать на самом деле...

Точнее 1 байт это не обязательно 8 бит
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[4]: единица памяти С++
От: LaptevVV Россия  
Дата: 04.03.15 19:04
Оценка:
Здравствуйте, _NN_, Вы писали:
H_C>>>>Какая базовая единица памяти написана в стандарте — 1 байт или sizeof(char)?
К>>>sizeof(char) == 1 по определению.
LVV>>Все-таки ты б ему уточнил, что 1 (один) в данном случае не 1 байт, а 1 char, который может и несколько байтов занимать на самом деле...
_NN>Точнее 1 байт это не обязательно 8 бит
Справедливое замечание.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: единица памяти С++
От: Mr.Delphist  
Дата: 04.03.15 19:28
Оценка: +2
Здравствуйте, Hard_Club, Вы писали:

H_C>Какая базовая единица памяти написана в стандарте — 1 байт или sizeof(char)?


На всякий случай позанудствую: также не забывайте, что для памяти базовая единица языка, базовая единица машинной архитектуры и базовая единица операционной системы могут отличаться.
Re[3]: единица памяти С++
От: koenjihyakkei Россия  
Дата: 04.03.15 21:29
Оценка: 7 (3)
Здравствуйте, LaptevVV, Вы писали:

LVV>Все-таки ты б ему уточнил, что 1 (один) в данном случае не 1 байт, а 1 char, который может и несколько байтов занимать на самом деле...


Я как-то работал с сигнальным процессором, у которого гарвардская архитектура с организацией памяти по 16 бит, так там char занимал одно слово (два байта), short столько же, а инт два слова, так получалось sizeof(char)=1(два байта), sizeof(short)=1, sizeof(int)=2. И вот там "веселуха" была с функциями типа memcpy, strcpy... приходилось свои писать
Re[4]: единица памяти С++
От: jazzer Россия Skype: enerjazzer
Дата: 05.03.15 01:56
Оценка: 1 (1)
Здравствуйте, _NN_, Вы писали:

_NN>Точнее 1 байт это не обязательно 8 бит


А еще точнее — не меньше 8 бит:

The fundamental storage unit in the C++ memory model is the byte. A byte is at least large enough to contain any member of the basic execution character set (2.3) and the eight-bit code units of the Unicode UTF-8 encoding form and is composed of a contiguous sequence of bits, the number of which is implementation-defined.



UPD Да, эта добавка про минимум 8 бит из UTF-8 появилась в С++11, раньше ее не было и байт мог быть каким угодно, лишь бы в него влезал basic execution character set.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Отредактировано 05.03.2015 4:42 jazzer . Предыдущая версия .
Re[4]: единица памяти С++
От: Pavel Dvorkin Россия  
Дата: 05.03.15 02:59
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>Точнее 1 байт это не обязательно 8 бит


А также 8, но для char могут использоваться только 7 из них (ASCII-7)
With best regards
Pavel Dvorkin
Re[2]: единица памяти С++
От: Kernan Ниоткуда https://rsdn.ru/forum/flame.politics/
Дата: 05.03.15 05:11
Оценка:
Здравствуйте, Abyx, Вы писали:

A>Здравствуйте, Hard_Club, Вы писали:


H_C>>Какая базовая единица памяти написана в стандарте — 1 байт или sizeof(char)?


A>Родина дала тебе стандарт. Открой стандарт, прочитай первый раздел главу 1.7 первое предложение — будешь знать что тебе надо.

A>В чем твоя проблема?!
Может жалко чубаксов на покупку стандарта?
Sic luceat lux!
Re[3]: единица памяти С++
От: Abyx Россия  
Дата: 05.03.15 09:16
Оценка: +1
Здравствуйте, Kernan, Вы писали:

K>Может жалко чубаксов на покупку стандарта?


какие чубаксы? есть же бесплатные черновики
In Zen We Trust
Re[4]: единица памяти С++
От: Vlad_SP  
Дата: 05.03.15 09:22
Оценка:
Здравствуйте, koenjihyakkei,

K>Я как-то работал с сигнальным процессором, у которого гарвардская архитектура с организацией памяти по 16 бит, так там char занимал одно слово (два байта), short столько же, а инт два слова, так получалось sizeof(char)=1(два байта), sizeof(short)=1, sizeof(int)=2. И вот там "веселуха" была с функциями типа memcpy, strcpy... приходилось свои писать


Может, на самом деле ты имел в виду sizeof(char) = 1 байту = 2 октета?
Re[4]: единица памяти С++
От: andyp  
Дата: 05.03.15 09:29
Оценка: 11 (2) +1
Здравствуйте, koenjihyakkei, Вы писали:

K>Я как-то работал с сигнальным процессором, у которого гарвардская архитектура с организацией памяти по 16 бит, так там char занимал одно слово (два байта), short столько же, а инт два слова, так получалось sizeof(char)=1(два байта), sizeof(short)=1, sizeof(int)=2. И вот там "веселуха" была с функциями типа memcpy, strcpy... приходилось свои писать


Сигнальники прекрасны. Вспомнилась моторола 56K, модифицированная гарвардаская архитектура, MAU 24 бит, две памяти данных X, Y. У всех указателей есть признак, на какую память указывает. Несколько уровней косвенных указателей приводили компилятор в ступор и он генерил неправильный код. Зато было 3 шины — для подтягивания инструкций и двух операндов из памяти одновременно. Мог MAC за такт делать. Ну и поддержка всякой хитрой адресации прям в железе.
Отредактировано 05.03.2015 9:31 andyp . Предыдущая версия .
Re[5]: единица памяти С++
От: koenjihyakkei Россия  
Дата: 05.03.15 09:31
Оценка:
Здравствуйте, Vlad_SP, Вы писали:

V_S>Может, на самом деле ты имел в виду sizeof(char) = 1 байту = 2 октета?


Возможно, я тамошнюю терминологию не помню, наверное там байт и считался 16 битным. Просто уже привыклось считать его по 8 бит.
Re[2]: единица памяти С++
От: nen777w  
Дата: 05.03.15 14:33
Оценка:
H_C>>Какая базовая единица памяти написана в стандарте — 1 байт или sizeof(char)?
К>sizeof(char) == 1 по определению.
Про битовые поля как то забыают, хоть и они по сути "виртуальны" но иногда и нет.
struct S {
  char m:4, n:4;
};

sizeof(S) == 1

struct S {
  char m:5, n:4;
};

sizeof(S) == 2
Re[3]: единица памяти С++
От: Кодт Россия  
Дата: 05.03.15 15:42
Оценка:
Здравствуйте, nen777w, Вы писали:

H_C>>>Какая базовая единица памяти написана в стандарте — 1 байт или sizeof(char)?

К>>sizeof(char) == 1 по определению.
N>Про битовые поля как то забыают, хоть и они по сути "виртуальны" но иногда и нет.

Сумма размеров членов не обязана быть равна размеру структуры. Причём, как в плюс, так и в минус: отбивки выравнивания, оптимизация пустого места.
Даже с обычными байтовыми полями, а уж с битовыми сам бог велел.
Перекуём баги на фичи!
Re[5]: единица памяти С++
От: wander  
Дата: 05.03.15 20:15
Оценка:
Здравствуйте, jazzer, Вы писали:

J>UPD Да, эта добавка про минимум 8 бит из UTF-8 появилась в С++11, раньше ее не было и байт мог быть каким угодно, лишь бы в него влезал basic execution character set.


На самом деле она была и раньше.
В явном виде она в стандарте С++ действительно была не прописана.
Но через ссылку на стандарт С (в котором об этом было как раз явно сказано), тем не менее, имелась в виду.
Re[5]: единица памяти С++
От: pagid Россия  
Дата: 06.03.15 04:22
Оценка: :)
Здравствуйте, Vlad_SP, Вы писали:

V_S>Может, на самом деле ты имел в виду sizeof(char) = 1 байту = 2 октета?

Это вряд ли, если минимальная адресуемая область память кратна 8-ми битовому байту она называется не byte, а word. Если не кратна, но немаленькая тоже обычно word, а не byte.
... << RSDN@Home 1.2.0 alpha 5 rev. 1495>>
Re[6]: единица памяти С++
От: Vlad_SP  
Дата: 06.03.15 06:43
Оценка:
Здравствуйте, pagid, Вы писали:

P>Это вряд ли, если минимальная адресуемая область память кратна 8-ми битовому байту она называется не byte, а word. Если не кратна, но немаленькая тоже обычно word, а не byte.


Вот первое попавшееся под руку:

Historically, the byte was the number of bits used to encode a single character of text in a computer and for this reason it is the smallest addressable unit of memory in many computer architectures. The size of the byte has historically been hardware dependent and no definitive standards existed that mandated the size. The de facto standard of eight bits is a convenient power of two permitting the values 0 through 255 for one byte.

Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.