2013-02-10 4 views
4

a boolean actually takes 1 byte of space이므로 bool[]은 비트 어레이를 나타내는 데 가장 공간 효율적인 방법이 아닙니다. 때로는 정수와 long이 더 효율적인 비트 배열로 사용되지만 long은 64 비트 만 저장할 수 있습니다. 제한된 메모리에 수천만 비트의 배열을 저장하는 공간 효율적인 방법이 있습니까?매우 큰 비트 배열을 효율적으로 표현하는 방법은 무엇입니까?

나는이 배열 할 필요가 클리어/개별 비트를 설정하고 일부 비트가 1 또는 0인지 확인하는 것입니다, 유일한 기능 즉, 내가 필요

void Set(int index, bool value); 
bool Get(int index); 

답변

11

난 당신이 필요로하는 무슨 생각 BitArray 클래스

+0

이 클래스의 가장 큰 문제는 적절한 제네릭 컬렉션 인터페이스를 구현하지 않는다는 것입니다. 아마 그가 비록 그 두 작업 만 필요하면 OP에 대한 문제는 아닙니다. – CodesInChaos

+3

@CodesInChaos : 어떤 유형의 일반 유형을 노출 하시겠습니까? 너의 요점은 문제 야. – leppie

+0

@leppie 'IList '을 구현하는 것이 적절한 IMO 였을 것이다. 저는 그들이 정상적인 배열에 추가 한 것처럼 .net 2.0을 추가하지 않았다는 것에 조금 놀랐습니다. – CodesInChaos