polevoy_cpp_2012_spring_lecture_12
.pdfОбъектно-ориентированное программирование
с использованием C++
Полевой Дмитрий Валерьевич к.т.н., доцент КиК
e-mail: oop.misis@gmail.com
Машинное слово
•платформозависимая хар-ка
•имеет неоднозначную интерпретацию (исторически)
•байт – единица адресации
•слово – несколько байт (обычно 2n)
28.04.2012 |
cppNewb.ru |
2 |
Длинна машинного слова
•процессор
–разрядность данных
–максимальное значение
беззнакового целого типа
•память
–разрядность адресуемых данных (шина данных)
–объем адресуемой напрямую памяти
28.04.2012 |
cppNewb.ru |
3 |
Порядок байтов
•определяет порядок записи байтов для многобайтовых чисел
28.04.2012 |
cppNewb.ru |
4 |
big-endian
•от старшего к младшему
•является стандартным для протоколов
TCP/IP (сетевой, network order)
пример:
0x00000b0f
0x00 |
0x00 |
0x0b |
0x0f |
|
|
|
|
28.04.2012 |
cppNewb.ru |
5 |
little-endian
•от младшего к старшему
•является стандартным для x86
пример:
0x00000b0f
0x0f |
0x0b |
0x00 |
0x00 |
|
|
|
|
28.04.2012 |
cppNewb.ru |
6 |
Когда порядок байтов важен
•передача данных через файлы
•передача данных через сеть
•низкоуровневые алгоритмы
манипуляции данными (уровня байт и бит)
28.04.2012 |
cppNewb.ru |
7 |
Целые числа
•для знаковых за знак отвечает разряд старшего байта
28.04.2012 |
cppNewb.ru |
8 |
Вещественные числа
•физическое представление может зависеть от порядка байт
•на x86 используются форматы
IEEE 754
–знак числа в старших байтах
–порядок числа в старших байтах
28.04.2012 |
cppNewb.ru |
9 |
Плюсы и минусы
+ little-endian
как uint32_t (4 байта) – 0x00000022 как uint16_t (2 байта) – 0x0022
как uint8_t (1 байт) – 0x22
- little-endian
отладочное/печатное значение не совпадает с размещением в памяти
28.04.2012 |
cppNewb.ru |
10 |