[英]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 = 8
, bits = 15
。 在第一次迭代中i = 0
:我們有(*v)[15 - 1 - 0] = (8 >> 0) & 0x1
。 8
是二進制1000
,向下移動0
是1000
。 1000 & 0x1
是0
。 讓我們跳到i = 4
: (*v)[15 - 1 - 4] = (8 >> 4) & 0x1
。 1000 >> 4
是1
和1 & 0x1
是1
,所以我們設置(*v)[10] = 1
。 結果向量為{ 0, ..., 0, 1, 0, 0, 0 }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.