powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Informix [игнор отключен] [закрыт для гостей] / битовые операции
4 сообщений из 4, страница 1 из 1
битовые операции
    #33556728
Oleg Luksha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поддерживает ли Informix битовые операции?
Если нет, то как проверить: установлен ли 7 бит в 1?
...
Рейтинг: 0 / 0
битовые операции
    #33557089
Фотография Daugava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Существует в базе sysmaster вот такая процедура:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
{ Stored procedure for setting boolean 'columns' in views for flags values }
    create procedure bitval ( bitset int, bitmask int) returning int;
        if (bitset <  0 ) then
            if (bitmask <  0 ) then
                return  1 ;
            end if;
            let bitset = bitset +  2147483648 ;
        end if;
        if (bitset >  1073741824 ) then
            if (bitmask =  1073741824 ) then
                return  1 ;
            end if;
        end if
        if (mod(bitset, 2 *bitmask) >= bitmask) then
            return  1 ;
        end if
        return  0 ;
    end procedure;
...
Рейтинг: 0 / 0
битовые операции
    #33558372
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дополню, что начиная с IDS 9 поддерживается тип данных BOOLEAN.
...
Рейтинг: 0 / 0
битовые операции
    #33564753
Julian
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Oleg LukshaПоддерживает ли Informix битовые операции?
Если нет, то как проверить: установлен ли 7 бит в 1?

М.б. подойдут функции Bit() в прицепе.
Можно создать в БД (у нас IDS 9.21) две одноименные ф-ции
и использовать, например, так:

1) выбор записей, в поле sign_mask которых установлен бит 7.
SELECT * FROM Table
WHERE Bit( sign_mask, 7 );

2) установка первых двух битов в значения 1 или 0,
в зависимости от значения соотв. булевых переменных ('t' или 'f')
UPDATE Table SET sign_mask = Bit( Bit( sign_mask, 1, var1 ), 2, var2 );
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / битовые операции
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]