2
голосов
4ответов
501 просмотров

Removing Bit fields in a struct

I have a question. I have a legacy application which used bit fields in a structure. Something like this struct sample { BYTE one: 2; BYTE two : 1; BYTE three: 5; } sampletest; So three can have a value of MAX 31 only. Now I have a requirement...

5
голосов
5ответов
1816 просмотров

Bitfield masks in C

Is there a portable way in C to find out the mask for a bit field at compile time? Ideally, I'd like to be able to atomically clear a field like this: struct Reference { unsigned age : 3; unsigned marked : 1; unsigned references : 4; }; struct Reference myRef; __sync_and_and_fetch(...

1
голосов
6ответов
2068 просмотров

Variable-sized bitfields with aliasing

I have some struct containig a bitfield, which may vary in size. Example: struct BitfieldSmallBase { uint8_t a:2; uint8_t b:3; .... } struct BitfieldLargeBase { uint8_t a:4; uint8_t b:5; .... } and a union to access all bits at once: template<typename T> union B...

6
голосов
9ответов
1554 просмотров

Битовые поля: Set vs test-and-set (для производительности)

У меня есть большое количество экземпляров такой структуры C: struct mystruct { /* ... */ unsigned flag: 1; /* ... */ }; flag изначально равен 0, но должен быть равен 1 при выходе из определенной функции. Самая простая реализация: void set_flag(struct mystruct *sp) { ...

3
голосов
5ответов
3236 просмотров

получение субструктуры из большой структуры в C

У меня в существующей программе очень большой номер struct. Эта структура включает большое количество битовых полей. Я хочу сохранить часть (скажем, 10 полей из 150). Пример кода, который я бы использовал для сохранения подкласса: typedef struct {int a;int b;char c} bigstruct; typedef s...

132
голосов
20ответов
35735 просмотров

Безопасно ли использовать -1 для установки всех битов в истинное значение?

Я видел, как этот шаблон часто используется в C и C ++. unsigned int flags = -1; // all bits are true Это хороший портативный способ сделать это? Или лучше использовать 0xffffffff или ~0?

6
голосов
3ответов
1673 просмотров

почему битовые поля для одних и тех же типов данных имеют меньший размер по сравнению с битовыми полями для смешанных типов данных

Мне любопытно узнать, почему битовые поля с одинаковым типом данных занимают меньший размер, чем со смешанными типы данных. struct xyz { int x : 1; int y : 1; int z : 1; }; struct abc { char x : 1; int y : 1; bool z : 1; }; sizeof (xyz) = 4 sizeof (abc) = 12. ...

6
голосов
7ответов
10455 просмотров

Как лучше всего инициализировать структуру битового поля в C ++?

В C ++ у меня есть класс, который содержит анонимную структуру битового поля. Я хочу обнулить его, не записывая вручную все поля. Я могу представить инициализацию в трех местах: Создайте конструктор в битовом поле Обнулить в списке инициализаторов конструктора для содержащего класса О...

7
голосов
3ответов
2914 просмотров

Как правильно использовать битовые поля в C?

Я использую битовые поля, чтобы получить легкий доступ к библиотеке с плавающей запятой, которую я пытаюсь сделать для микроконтроллера без FPU. Проблема в том, что я не могу заставить его работать с битовыми полями. Взгляните: typedef struct { union{ unsigned long mantissa: 23; ...

27
голосов
9ответов
28153 просмотров

Использование побитовых операторов для флагов

У меня четыре флажка Current = 0x1 Past = 0x2 Future = 0x4 All = 0x7 Допустим, я получил два флага Прошлое и Будущее (setFlags(PAST | FUTURE)). Как узнать, что в нем Past? Точно так же как я могу сказать, что Current в нем нет? Таким образом, мне не нужно проверять все возможные ком...

1
голосов
4ответов
1784 просмотров

Класс контейнера битового поля Enum

Я пытаюсь написать небольшой класс, чтобы лучше понимать битовые флаги в C ++. Но что-то не получается. Он печатает неправильные значения. В чем проблема? Я неправильно понял, как добавлять флаги? Или проверьте, есть ли они в битовом поле? Вот код: #include <iostream> enum flag { ...

2
голосов
7ответов
563 просмотров

Как выбрать значения битового флага?

У меня есть набор параметров, некоторые ортогональные (можно комбинировать в любой комбинации), некоторые эксклюзивные (разрешено только одно из набора), и мне нужно выбрать набор из enum значений, чтобы их можно было объединить с битом -в смысле or и извлекается с помощью побитового and. Я бы п...

-3
голосов
2ответов
385 просмотров

нужна помощь - преобразование битового поля

Я хочу преобразовать строки в битовые поля. Также преобразовать их в двоичные и затем использовать. Нужна помощь с этим ... помогите мне ..

33
голосов
6ответов
28850 просмотров

Упаковка битового поля C ++ с помощью bools

Я только что провел тест с битовыми полями, и результаты меня удивляют. class test1 { public: bool test_a:1; bool test_b:1; bool test_c:1; bool test_d:1; bool test_e:1; bool test_f:1; bool test_g:1; bool test_h:1; }; class test2 { public: int test_a:1; ...

25
голосов
4ответов
10892 просмотров

Как имитировать битовые поля в записях Delphi?

Я хотел бы объявить запись в Delphi, которая содержит тот же макет, что и в C. Для заинтересованных: эта запись является частью объединения в записи LDT_ENTRY ОС Windows. (Мне нужно использовать эту запись в Delphi, потому что я работаю над эмулятором Xbox в Delphi - см. Проект Dxbx на source...

4
голосов
4ответов
2852 просмотров

Битовые поля в C #

Итак, битовые поля. В частности, большие битовые поля. Я понимаю, как манипулировать отдельными значениями в битовом поле, но как мне это сделать в большом наборе, например, например: uint[] bitfield = new uint[4] { 0x0080000, 0x00FA3020, 0x00C8000, 0x0FF00D0 }; Конкретная проблема, с кот...

14
голосов
10ответов
13237 просмотров

Поддерживает ли ANSI C битовые поля со знаком / без знака?

Есть ли смысл квалифицировать битовые поля как подписанные / беззнаковые?

50
голосов
11ответов
48068 просмотров

Есть ли в Python тип битового поля?

Мне нужно компактное представление массива логических значений, есть ли в Python встроенный тип битового поля или мне нужно будет найти альтернативное решение?

25
голосов
2ответов
11537 просмотров

Как лучше всего манипулировать битовым полем в Python?

Я читаю протокол MPEG Transport Stream по UDP, и в нем есть несколько забавных битовых полей (например, длина 13). Я использую библиотеку «struct» для широкой распаковки, но есть ли простой способ сказать «Захватите следующие 13 бит» вместо того, чтобы вручную настраивать манипуляции с битами? Я...

79
голосов
11ответов
94680 просмотров

Битовые поля в C #

У меня есть структура, которую мне нужно заполнить и записать на диск (на самом деле несколько). Пример: byte-6 bit0 - original_or_copy bit1 - copyright bit2 - data_alignment_indicator bit3 - PES_priority bit4-bit5 - PES_scrambling control. bit6-bit7 - reserved В C я мо...