1에 대한 답변에서 이것은 확실하게 클래스가 의미하는 것입니다. 단순히 100,000 비트 (약 12.5K)를 포함하는 클래스를 만들고 operator&
메서드 (주소 연산자가 아닌 이진 값)를 재정의하십시오.
좋은 시작이 될 것이다 (예를 들어 우리가 비트 마스크를 들고 두 정수가) : 이것은 안된지만 당신에게 기본 아이디어를 줄 것이다
BigBits BigBits::operator &(const BigBits &that) const {
BigBits bb(*this);
bb.array[0] = this->array[0] & that.array[0];
bb.array[1] = this->array[1] & that.array[1];
return bb;
}
. 테스트하기 위해, 나는, 그 또한 사용자들은 정말 답에서
:-) 2 당신의 작업해야 할 때 등 생성자, 소멸자, 과제 등을 포함하여 상당히을 코딩해야 할 것 쉬운. 유일한 트릭 비트는 두 개의 에지 바이트이며 모든 내부 바이트는 모두 1 비트로 설정 될 수 있습니다.
가장자리 바이트를 설정하려면 비트 나누기를 사용하고 바이트의 비트 수와 모듈로를 사용한 다음 비트 마스크를 사용하여 설정합니다. 비트 마스크는 0x80
, 0xc0
, 0xe0
, 0xf0
, 0xf8
등이 될 것이며, 각각의 후속 값은 또 다른 1 비트를 더할 것입니다.
그런 다음 다양한 형태로 bitmask[bitpos % 8]
을 사용하여 배열 바이트가 bitpos/8
일 때 에지 바이트를 설정할 수 있습니다.
실제로 100000 비트 (12,500 바이트)를 의미합니까? 두 가지 질문에 대한 답은 필요한 작업을 수행하기 위해 클래스를 작성하고 해당 클래스에 연산자를 오버로드해야한다는 것입니다. 또는 기존 클래스를 사용하여 동일한 작업을 수행 할 수 있습니다. – john
@john 연산자에 과부하를주는 방법 &? –
당신의 클래스가 Bit100000이라고 불리면, 간단히'Bit100000 operator & (const Bit100000 & x, const Bit100000 & y) {...}'함수를 작성하십시오. – john