gpt4 book ai didi

c++ - 如何在位集中存储随机生成的无符号整数

转载 作者:行者123 更新时间:2023-11-30 03:53:54 35 4
gpt4 key购买 nike

我有一个位集,我需要在其中存储 # 个随机生成的整数(当然存储它的位表示)。所以,问题是我对如何做到这一点感到困惑。

即假设我一次生成一个整数(所有无符号整数)8、15、20。如何将最近生成的整数存储在我现有的位集中。

假设我首先生成“8”并将其存储在位集中,然后我生成“15”并将其存储在位集中。

我不知道或不明白如何将这些值存储在位集中。

注意:我事先知道 bitset 的大小,该大小基于我要生成的整数数量,我也知道。所以,最后我需要的是一个位集,所有位集都与所有生成的整数的位相匹配。

非常感谢您的帮助。

最佳答案

How can I store the recently generated integer in my existing bit set.

您可以从整数生成一个临时 bitset,然后在两个 bitset 之间分配值。

示例程序:

#include <iostream>
#include <bitset>
#include <cstdlib>

int main()
{
const int size = sizeof(int)*8;
std::bitset<2*size> res;
std::bitset<size> res1(rand());
std::bitset<size> res2(rand());

for ( size_t i = 0; i < size; ++i )
{
res[i] = res1[i];
res[size+i] = res2[i];
}

std::cout << "res1: " << res1 << std::endl;
std::cout << "res2: " << res2 << std::endl;
std::cout << "res: " << res << std::endl;

return 0;
}

输出:

res1: 01101011100010110100010101100111
res2: 00110010011110110010001111000110
res: 0011001001111011001000111100011001101011100010110100010101100111

更新

在给定整数的情况下设置 bitset 值的函数可用于避免创建临时 bitset 的成本。

#include <iostream>
#include <bitset>
#include <cstdlib>
#include <climits>

const int size = sizeof(int)*8;

void setBitsetValue(std::bitset<2*size>& res,
int num,
size_t bitsetIndex,
size_t numIndex)
{
if ( numIndex < size )
{
res[bitsetIndex] = (num >> numIndex) & 0x1;
setBitsetValue(res, num, bitsetIndex+1, numIndex+1);
}
}

int main()
{
std::bitset<2*size> res;
int num1 = rand()%INT_MAX;
int num2 = rand()%INT_MAX;
std::bitset<size> res1(num1);
std::bitset<size> res2(num2);

std::cout << "res1: " << res1 << std::endl;
std::cout << "res2: " << res2 << std::endl;

setBitsetValue(res, num1, 0, 0);
setBitsetValue(res, num2, size, 0);

std::cout << "res: " << res << std::endl;

return 0;
}

关于c++ - 如何在位集中存储随机生成的无符号整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29887478/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com