Страницы: 1
RSS
VBA Бинарное представление чисел и операции (маски, логика и т.д.)
 
Друзья подскажите пожалуйста. Как работать с бинарными масками (xor or and) в VBA напрямую? без пересчета поразрядного? если есть например интовое число - вогу я в одну строчку поменять третий бит на единичку? ...
 
Про бинарные операции было в этой теме: http://www.planetaexcel.ru/forum.php?thread_id=14194
 
{quote}{login=ZVI}{date=17.10.2010 08:05}{thema=}{post}Про бинарные операции было в этой теме: http://www.planetaexcel.ru/forum.php?thread_id=14194{/post}{/quote}  
непонимание !!!    
я про представление чисел!    
если я хочу поправить конкретный бит в числе :  
dim a as integer  
a=0  
a = a OR #0010 ' ХОЧУ ПОПРАВИТЬ ВТОРОЙ БИТ НА 1    
 
как правильно написать последнюю строку?
 
{quote}{login=Groovydmk}{date=17.10.2010 08:28}{thema=Re: }{post}я про представление чисел!{/post}{/quote}  
Так я о том же :-)  
 
Два варианта к Вашему примеру:  
 
1. a Or 2 - это если Вы помните, что 2 в бинарном  виде "0010"  
 
2. Если сложно в уме переводить из десятичных чисел в бинарное представление, то:  
2.1. Подключить в Excel надстройку Analysis ToolPak VBA    
2.2. Подключить ссылку на надстройку в VBE из меню: Tools – References – atpvbaen.xls - Ok  
2.3. a Or bin2dec("0010")
 
Вместо функции Bin2Dec надстройки Analysis ToolPak VBA можно использовать такую функцию:  
 
Function BinToDec(BinVal As String) As Long  
 Dim i%, j%, s$  
 s = Trim(BinVal)  
 j = Len(s)  
 For i = 0 To j - 1  
   BinToDec = BinToDec + CInt(Mid(s, j - i, 1)) * 2 ^ i  
 Next  
End Function
 
Спасибо!  
про логику понятно, а вопрос перевода (представления) в двоичной форме просто не решается как  с шестнадцетиричной например? &H00ff например можно записать в теле программы и VBA это нормально воспримет, вот думал может есть и в бинарной форме какойто префикс ...
 
{quote}{login=Groovydmk}{date=18.10.2010 07:10}{thema=}{post}Спасибо!  
про логику понятно, а вопрос перевода (представления) в двоичной форме просто не решается как  с шестнадцетиричной например? &H00ff например можно записать в теле программы и VBA это нормально воспримет, вот думал может есть и в бинарной форме какойто префикс ...{/post}{/quote}  
Нет, встроенных форматов для бинарного представления чисел в VBA нет.  
В VBA числа могут быть записаны как десятичные или шестнадцатиричные.  
Числа же в других системах счисления - с помощью надстроек или UDF, есть также встроенные Hex() и Oct()
Страницы: 1
Читают тему
Наверх