簡體   English   中英

如何使用 C++ 中的布爾向量模擬二進制值?

[英]How can I simulate binary values using a vector of booleans in C++?

我希望能夠在我的向量中保留相同數量的bits ,同時仍然執行二進制加法。 例如。

int numOfBits = 4;
int myVecVal = 3;
vector< bool > myVec;
GetBinaryVector(&myVec,myVecVal, numOfBits);

其 output 將是:

{0, 0, 1, 1}

我不知道如何制作 GetBinaryVector 的GetBinaryVector ,有什么想法嗎?

這似乎可行(盡管我在初始評論中添加的文章似乎建議您只有字節級訪問權限):

void GetBinaryVector(vector<bool> *v, int val, int bits) {
    v->resize(bits);
    for(int i = 0; i < bits; i++) {
        (*v)[bits - 1 - i] = (val >> i) & 0x1;
    }
}

左側設置第 i 個最低有效位,即索引bits - 1 - i 右側通過將值向下移動第 i 位並屏蔽除最低有效位以外的所有內容來隔離第 i 個最低有效位。

在您的示例中val = 8bits = 15 在第一次迭代中i = 0 :我們有(*v)[15 - 1 - 0] = (8 >> 0) & 0x1 8是二進制1000 ,向下移動01000 1000 & 0x10 讓我們跳到i = 4(*v)[15 - 1 - 4] = (8 >> 4) & 0x1 1000 >> 411 & 0x11 ,所以我們設置(*v)[10] = 1 結果向量為{ 0, ..., 0, 1, 0, 0, 0 }

暫無
暫無

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

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