Задать вопрос
uvelichitel
@uvelichitel
habrahabr.ru/users/uvelichitel

Как эффективно хранить большие битовые маски?

Бывает нужен []bit для алгоритмических задач с требованиями по памяти. bool использует byte а не bit(на моей машине)
fmt.Println(unsafe.Sizeof([1000]bool{}))//Печатает 1000. И это в байтах а не в битах https://golang.org/pkg/unsafe/#Sizeof
Появился интересный "math/bits" в stdlib, но он ограничен по величине uint64 и не имеет тривиальных методов get(n) set(n).
Посоветуйте где покопать. Код не обязателен, достаточно подходов. Что ли лепить свой тип из []uint64 и обвешивать методами?
  • Вопрос задан
  • 163 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
Можете использовать https://godoc.org/github.com/golang-collections/go...

Или написать свою имплементацию на основе []byte, например. Сдвигами или масками доставать нужный вам бит.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
nikonor
@nikonor
Программист go, perl
https://goplay.space/#aBmYRHvEg6u

думаю, что вот так надо, наверное. если я правильно понял вопрос. просто побитово сравниваем
Ответ написан
index0h
@index0h
PHP, Golang. https://github.com/index0h
В чем вы измеряете эффективность? В удобстве/памяти/производительности?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы