Александр |
Отправлено: 25.04.2005, 08:36 |
|
Не зарегистрирован
|
Уважаемые профессионалы!
Подскажите, пожалуйста, функции побитного обращения к слову данных. Например в слове меня интересует только 1, 2, 7, 15 биты. |
|
AVC |
Отправлено: 25.04.2005, 08:46 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Если биты нумеровать с 0 от младшего к старшему
результат = слово & 0x02; — анализировать 1-й бит
результат = слово & 0x04; — анализировать 2-й бит
результат = слово & 0x80; — анализировать 7-й бит
результат = слово & 0x8000; — анализировать 15-й бит
|
|
Александр |
Отправлено: 25.04.2005, 09:13 |
|
Не зарегистрирован
|
А результат — Это переменная типа Boolean ? |
|
Konstantine |
Отправлено: 25.04.2005, 09:54 |
|
Мастер участка
Группа: Модератор
Сообщений: 545
|
вообще-то Результат — это переменная того числового типа, которым являются операнды, но если туда поставить булеву, то результатом будет false, если нулевое значение, и true, если ненулевое...
|
|
Treumer |
Отправлено: 25.04.2005, 09:56 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 92
|
QUOTE (Александр @ 25/04/2005, 09:13) | А результат — Это переменная типа Boolean ? |
Результат будет — строго говоря тот же short int.
Но если его присвоить переменной типа BOOL — то будет — в результате операции приведения типов — boolean.
Ох уж эти паскальщики
Бесконечно далеки они от природы |
|
Георгий |
Отправлено: 25.04.2005, 22:58 |
|
Почетный железнодорожник
Группа: Модератор
Сообщений: 874
|
QUOTE (Александр @ 25/04/2005, 08:36) | Например в слове меня интересует только 1, 2, 7, 15 биты. |
CODE | union{
DWORD data;
struct{
DWORD a:1;
DWORD b:1;
DWORD dummy1 : 4;
DWORD c : 1;
DWORD dummy2 : 7;
DWORD d : 1;
}bits;
}coded_word;
coded_word.bits.a = 1;
coded_word.bits.b = 0;
coded_word.bits.c = 1;
coded_word.bits.d = 0; |
вот, описав такую конструкцию, можно лёгко и просто работать с битами |
|