저는 BitArray 객체를 생성하는 생성자가 있습니다.이 생성자는 사용자에게 사용하려는 비트 수를 묻습니다. 그런 다음 서명되지 않은 문자를 사용하여 많은 문자를 보유하는 데 필요한 바이트를 저장합니다. 그런 다음 사용자가 특정 비트를 '설정'할 수있는 메소드를 작성하고 끝에 전체 바이트 세트를 표시하고자합니다. 그러나, 내 설정 메서드는 비트를 변경하지 않는 것, 그 또는 내 인쇄 기능 (오버로드) 실제로 실제 비트를 인쇄하는 것 같지 않습니다. 누군가 문제를 지적 할 수 있습니까?동적 배열에서 비트 설정 및 표시
생성자
BitArray::BitArray(unsigned int n)
{
//Now let's find the minimum 'bits' needed
n++;
//If it does not "perfectly" fit
//------------------------------------ehhhh
if((n % BYTE) != 0)
arraySize =(n/BYTE);
else
arraySize = (n/BYTE) + 1;
//Now dynamically create the array with full byte size
barray = new unsigned char[arraySize];
//Now intialize bytes to 0
for(int i = 0; i < arraySize; i++)
{
barray[i] = (int) 0;
}
}
설정 방법 :
void BitArray::Set(unsigned int index)
{
//Set the Indexed Bit to ON
barray[index/BYTE] |= 0x01 << (index%BYTE);
}
인쇄 과부하 :
ostream &operator<<(ostream& os, const BitArray& a)
{
for(int i = 0; i < (a.Length()*BYTE+1); i++)
{
int curNum = i/BYTE;
char charToPrint = a.barray[curNum];
os << (charToPrint & 0X01);
charToPrint >>= 1;
}
return os;
}
아마 혼란 스럽네요.하지만 각 인덱스에 개별 '비트'값을 저장하기 위해'char []'배열을 사용하는 것 같습니다. 그렇다면'Set' 함수는 다음과 같아야합니다 :'barray [index-1] = '1';'? 배열의 각'char'가 1 또는 0을 유지하려면 시프 팅이 필요 없습니다. –