Вопросы по теме 'bit-fields'

Что означает двоеточие в объявлении структуры, например: 1, :7, :16 или :32?
Что означает следующий код C++? unsigned char a : 1; unsigned char b : 7; Я предполагаю, что он создает два символа a и b, и оба они должны быть длиной в один байт, но я понятия не имею, что делает часть «: 1» и «: 7».
6333 просмотров
schedule 26.10.2023

В С#, как легко сопоставить флаги перечисления из одного типа в другой?
Также смотрите обновления в конце вопроса... Учитывая следующую ситуацию: [Flags] enum SourceEnum { SNone = 0x00, SA = 0x01, SB = 0x02, SC = 0x04, SD = 0x08, SAB = SA | SB, SALL = -1, } [Flags] enum DestEnum {...
14306 просмотров
schedule 25.02.2023

Метод расширения перечисления битового поля для возврата словаря включенных значений
Перечисления могут сбивать с толку. Я пытаюсь создать метод расширения для типа Enum, который будет принимать значение и возвращать имена всех совпадающих битов. Дано: [Flags] public enum PlanetsEnum { Mercury=1, Venus=2, Earth=4,...
1562 просмотров
schedule 10.04.2023

Битовые поля в C со структурой, содержащей объединение структур
Хм... почему, когда я печатаю sizeof(struct MyStruct) , для этого кода выводится 3 (вместо 2)? #pragma pack(push, 1) struct MyStruct { unsigned char a : 6; union { struct {...
5931 просмотров
schedule 21.03.2023

Тип битовых полей без знака: int или unsigned int
Раздел 6.3.1.1 стандарта C99 содержит: Следующее может использоваться в выражении везде, где могут использоваться int или unsigned int : [...] Битовое поле типа _Bool , int , signed int или unsigned int . Если int...
2449 просмотров
schedule 13.05.2022

96-битное битовое поле с подполями, выровненными по октетам
Мне нужна 96-битная длинная структура, в которую я могу поместить пользовательские битовые поля. Длина полей везде, 8 , 3 , 26 , 56 . Важно, чтобы они оставались точно такой же длины (за одним исключением, см. ниже). Я вижу множество способов...
848 просмотров
schedule 05.02.2024

Релевантна ли целочисленная ширина в объявлении битового поля?
Я пытался найти причину, почему я не должен писать struct bitfield { signed foo:4; unsigned bar:2; }; вместо подробного указания struct bitfield { signed int foo:4; unsigned int bar:2; }; Поскольку размер каждого члена...
409 просмотров
schedule 13.12.2022

Почему перечисление несовместимо с битовыми полями в Windows?
Я работаю над интерфейсом протокола EBDS для Windows и Linux. Я пытаюсь упаковать все данные, требуемые протоколом, в структуры, затем я пишу саму структуру и все остальное в последовательный порт, отправляя его на устройство. Первая часть...
1241 просмотров
schedule 10.12.2022

Введите битовое поле/маску в C++
У меня есть эта проблема в C++: могу ли я typedef битовое поле, значения которого берутся из перечисления? Код будет более понятным: typedef { AUDIO = 0x01, VIDEO = 0x02, SUBTITLE = 0x04, DATA = 0x08, GUARD, ALL = 0xFF }...
2290 просмотров
schedule 27.09.2022

Стандартные совместимые битовые маски С++ 11 с использованием класса enum
Можете ли вы реализовать стандартные совместимые (как описано в 17.5.2.1.3 проекта n3242) безопасные битовые маски с использованием класса enum? Насколько я понимаю, тип T является битовой маской, если он поддерживает операторы |,&,^,~,|=,&= и ^=, и...
25203 просмотров
schedule 10.11.2022

Могут ли битовые поля быть только полями структуры / объединения, а не обычными автономными переменными?
Полевая часть битовых полей, кажется, предполагает, что они могут быть только полями внутри структуры или объединения. Может ли битовое поле быть типичной «автономной» переменной вне любого агрегированного типа данных, такого как объединение или...
2731 просмотров
schedule 20.04.2022

Реализация числа с плавающей запятой половинной точности в C++
Я пытаюсь реализовать простой тип с плавающей запятой половинной точности, исключительно для целей хранения (без арифметики, неявно преобразуется в двойное), но я получаю странное поведение. Я получаю совершенно неправильные значения для Half между...
2317 просмотров

Существует ли максимальное количество записей битовых полей в структуре C?
Более конкретно вопрос заключается в следующем: сколько элементов битового поля я могу добавить в структуру? Например: struct SMyStruct { unsigned int m_data1 : 3; unsigned int m_data2 : 1; unsigned int m_data3 : 7; // ......
1308 просмотров
schedule 15.11.2022

Где посмотреть реализацию GCC для поведения, определяемого реализацией?
Поскольку стандарт C++ во многих отношениях очень расплывчатый, я хочу найти конкретные реализации в разных компиляторах. На данный момент я хочу знать, как GCC выделяет и выравнивает битовые поля. В случае с компилятором MS Visual C++ это очень...
383 просмотров
schedule 15.09.2022

Что означает : в C?
Просматривая исходный пакет для QEMU, я нашел в файле exec.c: struct PhysPageEntry { /* How many bits skip to next level (in units of L2_SIZE). 0 for a leaf. */ uint32_t skip : 6; /* index into phys_sections (!skip) or phys_map_nodes...
160 просмотров
schedule 01.12.2022

Сдвиг битового поля целого числа без знака дает целое число со знаком
Рассмотрим следующую программу test.c : #include <stdio.h> struct test { unsigned int a:5; }; int main () { unsigned int i; struct test t = {1}; for (i = 0; i < t.a << 1; i++) printf("%u\n", i); return...
1215 просмотров
schedule 06.10.2022

Упаковка bools с битовым полем (C ++)
Я пытаюсь взаимодействовать с кодом Ada с помощью C ++, поэтому я определяю структуру с использованием битовых полей, чтобы все данные на обоих языках находились в одном месте. Следующее - не совсем то, что я делаю, но обрисовывает проблему....
2928 просмотров
schedule 26.04.2022

Структура с целочисленными битовыми полями со знаком, в результате чего минус выходные данные
Это код C со структурой. #include <stdio.h> #include <stdlib.h> int main() { struct{ int a : 4; unsigned int b : 3; int c : 3; } x; x.a = 7; x.b = 7; x.c = 7; printf("%d\n",x.a);...
1237 просмотров
schedule 03.09.2022

объявление битового поля в структуре С++
Я читал стандарт ISO С++ и наткнулся на эти объявления битовых полей. Следующий код мне не очень понятен struct { char a; int b:5, c:11, :0, d:8; struct {int ee:8;} e; } Здесь указано, что поля a, d и e.ee имеют разные места в...
1237 просмотров
schedule 23.02.2024

Есть ли переносимая альтернатива битовым полям С++?
Во многих ситуациях (особенно в низкоуровневом программировании) важна двоичная структура данных. Например: манипулирование оборудованием/драйвером, сетевыми протоколами и т. д. В C++ я могу читать/записывать произвольные двоичные структуры,...
5658 просмотров
schedule 10.04.2022