BitArray オブジェクトを作成するコンストラクターがあります。このオブジェクトは、ユーザーに使用したい「ビット」数を尋ねます。次に、unsigned chars を使用して、多数を保持するために必要なバイトを格納します。次に、ユーザーが特定のビットを「設定」し、最後にバイトの完全なセットを表示できるようにするメソッドを作成したいと考えています。ただし、私の Set メソッドはビットを変更していないようです。または、印刷関数 (オーバーロード) が実際のビットを実際に印刷していないようです。誰かが問題を指摘できますか?
コンストラクタ
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;
}