Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
AlexTorrin
3 / 3 / 0
Регистрация: 07.05.2012
Сообщений: 27
#1

Поля

11.05.2012, 17:14. Просмотров 314. Ответов 2
Метки нет (Все метки)

Здравствуйте.
C++
1
2
3
4
5
6
7
8
9
10
struct sreg {
              unsigned enable : 1;
              unsigned page : 3;
              unsigned : 1;        // не используется
              unsigned mode : 2;
              unsigned : 4;        // не используется
              unsigned access : 1;
              unsigned length : 1;
              unsigned non_resident : 1;
        };
Не могли бы вы объяснить, что это? Код взят из книги Страуструпа.
Что такое структура и зачем она нужна я знаю, но что означает "поля"? И почему у одних "полей" названия есть у других нет? Причем здесь unsigned? И как это использовать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.05.2012, 17:14
Ответы с готовыми решениями:

Битовые поля. Поля без типа и имени
Вчера сделал очень интересную и болезненную ошибку (с точки зрения времени, так как искал я ее...

Копировать значение поля m_moo в значение поля m_moo класса foo
А что означает запись? Foo1(Foo1 const& foo):m_moo(foo.moo) то что это к.копирования понятно.Не...

Поля на С++
Дана задача: надо ввести поле на C++, потом поделить его на 4-ре квадрата, потом поделить эти...

Битовые поля
Народ, напишите программу для включения 3-го разряда однобайтового числа и переключения 7-го. Никак...

Битовые поля
Доброго времени суток. Читаю книгу "Освой самостоятельно С++ за 21 день", наткнулся на битовые...

2
OstapBender
584 / 523 / 75
Регистрация: 22.03.2011
Сообщений: 1,585
11.05.2012, 17:37 #2
гугли "битовые поля".

как пример использования:

множество флагов (если прям ну ваще жалко памяти по 1 байту на каждый флаг),а так отдаем по 1 биту.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
struct data_t {
 
    unsigned flag1: 1;
    unsigned flag2: 1;
    unsigned flag3: 1;
 
    // ...
};
 
data_t d;
 
// ...
 
d.flag1 = 1;
d.flag2 = 0;
как другой пример, иногда удобно брать отдельные биты и пары битов из переменной.
в данном случае рассмотрим содержание в 1 объединении информации о старшем и младшем байте числа short (у меня оно 2-х байтное).
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
union _SHORT {
 
    short var;
 
    struct {
 
        unsigned low: 8;
        unsigned high: 8;
 
    };
 
};
 
int main(int argc, char *argv[]) {
 
    _SHORT s;
    s.var = 0xFFFA;
 
    std::cout << std::hex << s.high << ' ' << s.low;
 
}
выведется "ff fa"
1
AlexTorrin
3 / 3 / 0
Регистрация: 07.05.2012
Сообщений: 27
11.05.2012, 17:42  [ТС] #3
OstapBender, Спасибо большое!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.05.2012, 17:42

Битовые поля
Здравствуйте. Возникла необходимость работы с битовыми полями. Однако не могу понять, почему в...

Битовые поля
Классы для хранения байта (в виде битовых полей)1. Создать такой метод, чтобы ноль перемещался от...

Битовые поля
Подскажмте пожалуйста новичку, что такое битовые поля.Уже перечитываю раз 11ый, а никак понять не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru