Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Проверка состояния бита Добавлено: 01.04.06 17:50  

Автор вопроса:  BUG(O)R | Web-сайт: hunger.ru | ICQ: 827887 
Есть байт, например 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-сайт: www.vbnet.ru
 Профиль | | #2
Добавлено: 01.04.06 18:30
Бинарные операторы тебе помогут однако.

Ответить

Номер ответа: 3
Автор ответа:
 BUG(O)R



ICQ: 827887 

Вопросов: 13
Ответов: 142
 Web-сайт: hunger.ru
 Профиль | | #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-сайт: hw.t-k.ru
 Профиль | | #5
Добавлено: 02.04.06 00:34
If (15 And 8) = 8 Then MsgBox "Третий бит установлен"

будет более верно.

Ответить

Номер ответа: 6
Автор ответа:
 BUG(O)R



ICQ: 827887 

Вопросов: 13
Ответов: 142
 Web-сайт: hunger.ru
 Профиль | | #6
Добавлено: 02.04.06 08:02
sne, спасибо, так бы сразу ответили.

Команды Imp нет. Есть инструкция jmp.


Не шути так больше:)

Ответить

Номер ответа: 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-сайт: hunger.ru
 Профиль | | #8
Добавлено: 02.04.06 10:00
Imp - это оператор импликации двух выражений.

Ответить

Номер ответа: 9
Автор ответа:
 Sacred Phoenix



ICQ: 304238252 

Вопросов: 52
Ответов: 927
 Профиль | | #9 Добавлено: 02.04.06 10:22
If (15 And 8) = 8 ничем не правильнее If (15 And 8), к тому же и писать больше надо
Чтоб никто не спорил, оба варианта правильные. Просто: в 1ом варианте проверяется лочическая величина (15 And 8) = 8, а во 2ом варианте целое число (8) сначала преобразуется в логическое значение (True). И все

Ответить

Номер ответа: 10
Автор ответа:
 HOOLIGAN



Вопросов: 0
Ответов: 1066
 Профиль | | #10 Добавлено: 02.04.06 13:48
sne, спасибо, сразу бы так и сказал
я уж подумал, BUG(O)R среди инструкций процессора нашел Imp...

Ответить

Номер ответа: 11
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #11
Добавлено: 02.04.06 14:48
2хулиган, просто некоторые флаги иначе будут считаться за True, хотя и не совпадают подностью с маской... С такой траблой раз встретишься, подевишься и запомнишь на всю жизнь ) Вот поделиться желал...

Ответить

Номер ответа: 12
Автор ответа:
 HOOLIGAN



Вопросов: 0
Ответов: 1066
 Профиль | | #12 Добавлено: 02.04.06 15:19
Если проверяется 1 бит, как в примере (15 And 8) - разницы нет. Если проверяется маска из нескольких бит - это уже другой разговор.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам