![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Oracle и побитовые операции [D7]
Michail Dalakov © (2004-02-28 12:12:00)Как известно в Oracle есть пакет для выполнения побитовых операций с типом данных RAW. Как проделать то же самое с типом Number не прибегая к преобразованию типов
Michail Dalakov (2004-02-28 16:03:00) [1]Согласен,
Спасибо, особенно за Reindeer Moss Eater © (28.02.04 12:30) [1]
Reindeer Moss Eater (2004-02-28 15:49:00) [2]Кроме того никто не запрещает реализовать OR на встроенной яве
Reindeer Moss Eater (2004-02-28 15:44:00) [3]LarryAllison@oracle.com
Michail Dalakov (2004-02-28 15:42:00) [4]To [6] Сoгласен
To [7] Да, но в этом случае надо держать массив, где количество
элементов = 2*2^n, n-количество бит, и делать
result := BITAND(result,A[i]) + B[i]
Reindeer Moss Eater (2004-02-28 15:24:00) [5]то это будет столько же операций +2^n,
Поднять третий и четвертый бит справа
result := BITAND(result,3) + 12
Одна операция
Reindeer Moss Eater (2004-02-28 15:20:00) [6]А если он уже поднят?
Michail Dalakov (2004-02-28 15:19:00) [7]Ну да, но если надо установить несколько бит, то это будет столько же операций +2^n, правда в приведенном примере я не понял почему не просто
Поднять третий бит справа
Result := result + 4
Поднять четвертый бит справа
Result := result + 8
Reindeer Moss Eater (2004-02-28 14:29:00) [8]Нету.
Но ее можно эмулировать.
исходное значение
Result:=2; -- $0010
Поднять третий бит справа
Result := BITAND(result,11) + 4
Поднять четвертый бит справа
Result := BITAND(result,7) + 8
Michail Dalakov (2004-02-28 14:05:00) [9]А есть ли ф-ия побитового ОR? И как она выглядит в этом случае?
Michail Dalakov (2004-02-28 12:40:00) [10]Спасибо, странно что эта ф-ия недокументирована
Reindeer Moss Eater (2004-02-28 12:30:00) [11]BITAND
Для целых положительных аргументов