簡體   English   中英

精確的X位大小的變量支持按位運算(C ++)

[英]Exact X-bits sized variables that support bitwise operations(c++)

我正在嘗試使用C ++中的位操作來解決問題,但我真的很困。 請通過以下查詢幫助我。

1)是否可以創建變量A和B,它們恰好占用了100000bit的內存,並且像A&B這樣的操作對它有效?

2)是否有一種快速的方法來生成B(100000bits),使其前n位為0,后m位為0,其余為1? (例如,如果B為10位,則為0000011000之類的數字)

當然,在回答1時,這就是類的目的。 只需創建一個包含100,000位(約12.5K)的類並重寫operator&方法(二進制的,而不是address-of運算符)。

一個很好的開始(例如,我們有兩個整數保存位掩碼):

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;
}

這未經測試,但應該可以為您提供基本的思路。 為了測試它,我必須編寫一些代碼,包括構造函數,析構函數,賦值等等,而這實際上應該是您的任務:-)

回答兩個,這也很容易。 唯一的特技位是兩個邊緣字節,所有內部字節都只能設置為全部1位。

為了設置邊緣字節,您可以使用除法位和一個字節中的位數進行模運算,然后使用位掩碼進行設置。 所述位掩碼是0x800xc00xe00xf00xf8等等,其中每個隨后的值添加另一1個比特。

然后,您將以各種形式使用bitmask[bitpos % 8]設置邊緣字節,該字節的數組索引將為bitpos / 8

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM