[英]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位。
為了設置邊緣字節,您可以使用除法位和一個字節中的位數進行模運算,然后使用位掩碼進行設置。 所述位掩碼是0x80
, 0xc0
, 0xe0
, 0xf0
, 0xf8
等等,其中每個隨后的值添加另一1個比特。
然后,您將以各種形式使用bitmask[bitpos % 8]
設置邊緣字節,該字節的數組索引將為bitpos / 8
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.