Комбинации и bitfields

асоциации

Имаше създаден образувание, което съдържа три полета - едно поле е тип число (4 байта), два вида поле кратко междинно съединение (2 байта всяка) и 4 поле един байт. След като стойността е възложена на DWORD поле, то с това се предлагат и на останалата част от областта.

Комбинации и bitfields
Асоциация на Б.

Спомням си, че на x86 байта са подредени от дясно на ляво. Всички полета сдружение "има" едни и същи данни, но всяко поле има достъп само до част.
Ето още един пример: помисли за представяне на числа с плаваща запетая:

Моля, имайте предвид, че Съюзът може да се инициализира като структура. Стойността трябва да се преобразува към тип, който има първото поле. Сравнете резултатите

битови полета

В този пример, всяко поле на структурата се определя като област малко, дължината на всяко поле е единство. Можете също така, както в областта на конвенционалната структура да се прилага за всяко поле. Бит полета са от тип неподписан вътр, тъй като те имат дължина от най-малко. Ако дължината на полето е по-голям от един бит, полето може да има и подписан тип цяло число.

Същото действие може да се направи с конвенционален смяна

Нека разгледаме още един пример - постоянен знак на смени в дясно. Изместване надясно (>>) избутва най-левия бит надясно и записи нула. Поради тази операция смяна право не може да се прилага, например, номера със знак, тъй като знаков бит се губи. За коригиране на ситуацията, ние ще направим постоянно преминаване знак: ние ще проверим последния номер на малко (не забравяйте, че ние работим с x86 архитектура и бита са подредени "отзад напред")

Тук се използват специално int32_t тип (stdint.h библиотека), за да се гарантира, че размерът на променливите в 32-та бита. Сега можете да се обадите на функцията и да видим резултата.

RU-Cyrl 18- Упътване Sypachev S.S. 1989-04-14 [email protected] Степан Sypachev студенти