Почему в тип данных из двух бит я не могу записать нужное мне число?

Есть структура, которая хранит чимсло из 2 бит, все верно же?

struct Bytes2InNumber{
    int a:2;
};

Создал объект, записываю число 2, т.е (00 = 0,01 = 1, 10 = 2, 11 = 3).

struct Bytes2InNumber bits_2_in_number;
bytes_2_in_number.a = 2;
printf("Number with 2 bytes: %d\n", bytes_2_in_number.a);

Вывод printf: введите сюда описание изображения

Прошу прощения за, быть может, глупость, никогда этим раньше не занимался и что происходит - не понимаю

В printf написано bytes, ну я про биты говорю, не обращайте внимания, описался


Ответы (1 шт):

Автор решения: Harry

При использовании int есть такая вещь, как знаковый бит, поэтому у вас записываются числа не 0-3, а от -2 до 1...

Вот такое изменение

struct Bytes2InNumber{
    unsigned int a:2;
};

должно вам помочь...

→ Ссылка