Другие языки программирования и технологии

битовые карты: так ли я понял тему, для чего вообще используются?

вот исходники: http://pastebin.com/5s2eesii
глянула.
не поняла нахрена вообще там массив mask если можно просто лепить побитовое со степенями двойки или сдвигать на нужное число разрядов (что работает много быстрее) .

Весь этот массив - попытка перевести положение единички из двоичного представления в десятеричное и потом кряхтя её там отловить.

вся сейчашняя бытовая компутерия на двоичном.
запись через побитовые сдвиги или сравнения использует арифметику по основанию "2", а не "10".
в маск использованы биты от конца значения по номеру ячейки массива. Но нахрена такое расточительство как целый массив из нулей и одной единички на конкретной позиции -непонятно
Bunyod Karimov
Bunyod Karimov
27 060
Лучший ответ
Сергей Сейидов все-таки десятичная запись смотрится приятне, чем куча нулей и единица :) по поводу сдвига, согласен, работать будет быстрее, массив из 8-ми байтов это расточительство? мы живем в 2014-м году, где гигабайт памяти стоит ~5-7 долларов :)
Сергей Сейидов хм, вариант с массивом таки быстрее, чем со сдвигом, как я и предположил :)
Монохромное изображение, для не взвешенных графов, да и много где есть возможность хранить два состояния.
В таком виде использовать будет трудно, слишком мал размер ячейки под хранение битов. Реализация кривовата, но вроде работает.

Битовые карты используются для фильтрации больших объёмов данных по нескольким признакам (каждый из которых представлен битовой картой) . Для этого используются поэлементные битовые отрицания, сложения и умножения элементов битовых карт.
Именно по этой причине размер элементов должен быть как можно больше. Просто быстрее будет работать слияние битовых карт.

Также можно использовать для представления данных с небольшим набором параметров, например воздушный шарик - {красный, синий, зелёный, жёлтый} разбивается на 4 битовые карты.

ЗЫ
Оба предложенных варианта используются в индексах баз данных.
Углубляться не хочу, это слишком серьёзная тема.
KR
Kadyrzhan Rakhmetullin
11 112