Как получить значение конкретного бита в байте

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Ruslan Demidow
Мужчина!
Мужчина!
Аватара пользователя
 
Сообщения: 987
Зарегистрирован: 25.03.2004 (Чт) 13:39
Откуда: N.Novgorod

Как получить значение конкретного бита в байте

Сообщение Ruslan Demidow » 26.04.2004 (Пн) 12:13

Сорри за чайниковский вопрос.
Как получить значение конкретного бита в байте.
например дано:
Название флага | Маска в HEX-формате | Маска в двоичном формате
DB_DELETED | 0х0001 | 0000 0000 0000 0001
DB_MARKED_FOR_PURGE | 0х0002 | 0000 0000 0000 0010

Как?
Подскажите пожалуйста алгоритм.
И если не трудно, простой пример. Чтобы понять механизм.

skiperski
Идеолог
Идеолог
Аватара пользователя
 
Сообщения: 1386
Зарегистрирован: 25.06.2002 (Вт) 15:52

Сообщение skiperski » 26.04.2004 (Пн) 12:59

Код: Выделить всё
Private Function IsByteSelected(ByVal Value As Long, ByVal Mask As Long) As Boolean
    IsByteSelected = (Value And Mask)
End Function

Ruslan Demidow
Мужчина!
Мужчина!
Аватара пользователя
 
Сообщения: 987
Зарегистрирован: 25.03.2004 (Чт) 13:39
Откуда: N.Novgorod

Сообщение Ruslan Demidow » 26.04.2004 (Пн) 14:23

Извини, skiperski.
Я новичок (читай чайник) поэтому мне можно :)
А как мне передать в параметре маску?
Пишу как есть в описании маски 0х0002 - ошибку выдаёт.
Какой формат записи в HEX?
Что не так делаю?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 26.04.2004 (Пн) 14:34

0x0002 пишут обычно в C.
В VB надо писать &h0002.
В данном примере, чтобы проверить флаг DB_DELETED используй выражение IsByteSelected(Value, &h1&)
Lasciate ogni speranza, voi ch'entrate.

Ruslan Demidow
Мужчина!
Мужчина!
Аватара пользователя
 
Сообщения: 987
Зарегистрирован: 25.03.2004 (Чт) 13:39
Откуда: N.Novgorod

Сообщение Ruslan Demidow » 26.04.2004 (Пн) 14:50

alibek писал(а):0x0002 пишут обычно в C.
В VB надо писать &h0002.
В данном примере, чтобы проверить флаг DB_DELETED используй выражение IsByteSelected(Value, &h1&)


Спасибо тебе большое!! :)

Joss
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 26.04.2004 (Пн) 14:49

Раскладывание байта на биты

Сообщение Joss » 27.04.2004 (Вт) 12:20

Посмотри ветку http://am.rusimport.ru/MSAccess/topic.aspx?ID=272 может пригодится.

Ruslan Demidow
Мужчина!
Мужчина!
Аватара пользователя
 
Сообщения: 987
Зарегистрирован: 25.03.2004 (Чт) 13:39
Откуда: N.Novgorod

Re: Раскладывание байта на биты

Сообщение Ruslan Demidow » 27.04.2004 (Вт) 14:19

Joss писал(а):Посмотри ветку http://am.rusimport.ru/MSAccess/topic.aspx?ID=272 может пригодится.

Спасибо. Посмотрю.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 32

    TopList