Страница: 1 |
Страница: 1 |
Вопрос: Проверка состояния бита
Добавлено: 01.04.06 17:50
Автор вопроса: BUG(O)R | Web-сайт:
Есть байт, например 3F, что в бинарной системе значит 00111111, так вот, как в ВБ проверить состояния например 3 и 6 битов? Был бы ассемблер я бы без разговора сделал test al,40h для проверки 6 бита или test al,8 для проверки 3 бита.
Аналога test в ВБ я не нашёл, как поступить?
Ответы
Всего ответов: 12
Номер ответа: 1
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #1
Добавлено: 01.04.06 18:16
Если знаешь, что делает test, то к чему вопросы?
Номер ответа: 2
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #2
Добавлено: 01.04.06 18:30
Бинарные операторы тебе помогут однако.
Номер ответа: 3
Автор ответа:
BUG(O)R
ICQ: 827887
Вопросов: 13
Ответов: 142
Web-сайт:
Профиль | | #3
Добавлено: 01.04.06 20:43
HOOLIGAN, я же написал, что не нашёл аналога test на VB.
Павел, если можешь подсказать конкретную функцию - так и сделай, потому что понятие бинарные операторы я слышу впервые.
Знаю логические команды для работы с битами(and, or,test,xor), в ВБ есть всё, кроме test. Ещё вроде видел команду Imp, предназначения не знаю, но думаю этоне аналог test.
Номер ответа: 4
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #4
Добавлено: 01.04.06 21:18
Команды Imp нет. Есть инструкция jmp.
Инструкция test выполняет то же самое, что и инструкция and. Единственное отличие, которое не будет тебе помехой - test в отличие от and, состояние операндов не меняет, и только устанавливает флаги.
Так что
If (15 And 8) Then MsgBox "Третий бит установлен"
Номер ответа: 5
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #5
Добавлено: 02.04.06 00:34
If (15 And 8) = 8 Then MsgBox "Третий бит установлен"
будет более верно.
Номер ответа: 6
Автор ответа:
BUG(O)R
ICQ: 827887
Вопросов: 13
Ответов: 142
Web-сайт:
Профиль | | #6
Добавлено: 02.04.06 08:02
sne, спасибо, так бы сразу ответили.
Не шути так больше
Номер ответа: 7
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #7
Добавлено: 02.04.06 08:48
sne
If (15 And 8) = 8 ничем не правильнее If (15 And 8), к тому же и писать больше надо.
BUG(O)R
может объяснишь темному, что за "команда Imp", а ?
Номер ответа: 8
Автор ответа:
BUG(O)R
ICQ: 827887
Вопросов: 13
Ответов: 142
Web-сайт:
Профиль | | #8
Добавлено: 02.04.06 10:00
Imp - это оператор импликации двух выражений.
Номер ответа: 9
Автор ответа:
Sacred Phoenix
ICQ: 304238252
Вопросов: 52
Ответов: 927
Профиль | | #9
Добавлено: 02.04.06 10:22
Номер ответа: 10
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #10
Добавлено: 02.04.06 13:48
sne, спасибо, сразу бы так и сказал
я уж подумал, BUG(O)R среди инструкций процессора нашел Imp...
Номер ответа: 11
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #11
Добавлено: 02.04.06 14:48
2хулиган, просто некоторые флаги иначе будут считаться за True, хотя и не совпадают подностью с маской... С такой траблой раз встретишься, подевишься и запомнишь на всю жизнь ) Вот поделиться желал...
Номер ответа: 12
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #12
Добавлено: 02.04.06 15:19
Если проверяется 1 бит, как в примере (15 And 8) - разницы нет. Если проверяется маска из нескольких бит - это уже другой разговор.