Обсуждение:Как в RSL можно выполнить побитовые операции
0 (0)
Обсуждение:Как в RSL можно выполнить побитовые операции ( Обсуждение примера 14.11.2006 20:43 )
2(2)При решении некоторых задач можно столкнуться с необходимостью битовых операций. К примеру - программировании контрольно-кассовых машин в среде РСЛ через порт или предоставленны API, математических задачах, при которых преобразование числе быстрее будет сделать побитовыми сдвигами. Вот пример, как можно воспользоваться функциональностью WindowsScriptHost
Посмотреть пример
>> ОтветитьА зечем? ( Дмтрий Nartub 28.06.2007 11:42 )
0(0)Кажется, быстрее будет работать длм-ка
я, например, давно создал библиотечку логических побитовых функций (установка битов,получение бита по номеру и т.п.)
Например bGetBit(целое число, номер бита):
#include "rsl\rsldll.h" static void DLMAPIC bGetBit (void) { unsigned a,b,c; VALUE *val; GetParm (0,&val); if (val->v_type == V_INTEGER) a=(unsigned)val->value.intval; GetParm (1,&val); if (val->v_type == V_INTEGER) b=(unsigned)val->value.intval; c=(a & (1 << b))>>b; ReturnVal (V_INTEGER,&c); } void DLMAPI EXP AddModuleObjects (void) { AddStdProc (V_INTEGER, "bGetBit", bGetBit, 0); }
Компилируем с помощью DLM SDK, подключаем в макросе, и работаем
>> ОтветитьА зачем? ( Дмтрий Nartub 28.06.2007 11:42 )
0(0)Кажется, быстрее будет работать длм-ка
я, например, давно создал библиотечку логических побитовых функций (установка битов,получение бита по номеру и т.п.)
Например bGetBit(целое число, номер бита):
#include "rsl\rsldll.h" static void DLMAPIC bGetBit (void) { unsigned a,b,c; VALUE *val; GetParm (0,&val); if (val->v_type == V_INTEGER) a=(unsigned)val->value.intval; GetParm (1,&val); if (val->v_type == V_INTEGER) b=(unsigned)val->value.intval; c=(a & (1 << b))>>b; ReturnVal (V_INTEGER,&c); } void DLMAPI EXP AddModuleObjects (void) { AddStdProc (V_INTEGER, "bGetBit", bGetBit, 0); }
Компилируем с помощью DLM SDK, подключаем в макросе, и работаем
>> ОтветитьПрошу прощения, задвоился пост ( Дмтрий Nartub 28.06.2007 11:43 )
0(0)Not specified
>> ОтветитьТо, что ДЛМ быстрее - согласен.. ( Izmajlov 28.06.2007 11:53 )
0(0)Но.. не все программируют длмки для себя, и второе - не у всех она есть.. если ее распространить, то надобность в использовани WSH для побитовых операций отпадет. Есть еще один аспект примера - учебный..как использовать функциональность WSH..
С уважением,
Измайлов Ф.В.
>> ОтветитьПолностью поддерживаю ( Дмтрий Nartub 28.06.2007 16:18 )
0(0)Ведь должны же быть задачки для освоения технологий в учебных целях ;)
С уважением к автору,
Д.Нартуб
>> ОтветитьВ doctor.d32 давным давно есть побитовые операции (+) ( григ 29.06.2007 07:21 )
0(0)dcAnd, dcOr, dcXor, dcNot.
>> ОтветитьРазбирал исходники доктора. Натыкался :) ( Дмтрий Nartub 29.06.2007 09:16 )
0(0)Not specified
>> Ответить