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

92
22 апреля 2022, 11:00

Есть структура, которая хранит чимсло из 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, ну я про биты говорю, не обращайте внимания, описался

Answer 1

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

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

struct Bytes2InNumber{
    unsigned int a:2;
};

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

READ ALSO
Vulkan API не возвращает расширения и слои валидации

Vulkan API не возвращает расширения и слои валидации

При попытке получения свойств слоёв валидации и расширений в вектора типа VkLayerProperties и VkExtensionProperties, функции VkEnumerateInstanceLayerProperties и VkEnumerateInstanceExtensionProperties...

102
Как сделать метод const и неconst одновременно? [закрыт]

Как сделать метод const и неconst одновременно? [закрыт]

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском

118
Спящий парикмахер

Спящий парикмахер

Помогите разобраться как реализовать задачу "Спящий парикмахер", используя обмен сообщениями: Send и RecvРазобрался, как реализовать через...

156
Ошибка Thread 1: EXC_BAD_ACCESS (code=1, address=0x0) Xcode c++

Ошибка Thread 1: EXC_BAD_ACCESS (code=1, address=0x0) Xcode c++

Есть программа, ошибку выдает после прохождения функции mat1, при присваивании A[i] значение функции

133