Битовые операции

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
xqz_me
Постоялец
Постоялец
 
Сообщения: 413
Зарегистрирован: 04.12.2005 (Вс) 14:58

Битовые операции

Сообщение xqz_me » 04.12.2005 (Вс) 15:22

Всем привет! Есть один вопрос.

Есть число (от 0 до 255), надо разложить его на биты, какие-то биты отключить, какие-то включить и снова получить нормальное число. Как это сделать? Подскажите, пожалуйста (у меня Visual Basic 6.0).

vvs_adm
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1492
Зарегистрирован: 03.02.2005 (Чт) 3:45
Откуда: оттуда ;)

Сообщение vvs_adm » 04.12.2005 (Вс) 16:03

А зачем тебе его раскладывать? Что бы отключить\подключить биты, тебе достаточно сделать :
1) подключить YourNum = YourNum OR YourConst (подключаемый бит =1)
2) отключить YourNum = YourNum AND YourConst (отключаемый бит =0)
Никогда не откладывай на завтра то, что можно ... отложить на послезавтра!

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 04.12.2005 (Вс) 16:17

Код: Выделить всё
dim BitMask as Byte
BitMask = 0
' Установим биты 0 и 3 в единицу, остальные оставим нулями
BitMask = 2^0 Or 2^3
' А теперь добавим бит 6
BitMask = BitMask Or 2^6
' Инвертируем бит 7
BitMask = BitMask Xor 2^7
' Снимем бит 3
BitMask = BitMask And (Not 2^3)
' Проверим, есть ли совпадения с другой битовой маской
If (BitMask And 147) > 0 Then
  Msgbox "Совпадения есть"
Else
  Msgbox "Совпадений нет"
End If

xqz_me
Постоялец
Постоялец
 
Сообщения: 413
Зарегистрирован: 04.12.2005 (Вс) 14:58

Сообщение xqz_me » 04.12.2005 (Вс) 18:28

Спасибо! Не очень понял, что значит "Инвертируем бит" - сменим статус на противоположенный что ли?

И последний вопрос: как проверить, активирован ли в заданном числе какой-либо бит. И как шестнадцатеричное число перевести в десятичное (как наооборот, я знаю).

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 05.12.2005 (Пн) 1:27

xqz_me писал(а):Не очень понял, что значит "Инвертируем бит" - сменим статус на противоположенный что ли?
Да. Существительное - "инверсия".

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 05.12.2005 (Пн) 8:15

И как шестнадцатеричное число перевести в десятичное (как наооборот, я знаю).

val("&H" & chislo)
الفيجوال بيسك الرابح


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 212

    TopList  
cron