Александр |
Отправлено: 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; |
вот, описав такую конструкцию, можно лёгко и просто работать с битами |
 |