我有 2个位集,每个位集存储 100 位。如何减去它们,将它们视为无符号数?
Jenia
问问题
5105 次
3 回答
9
如果您的意思是清除第一个操作数中的所有位,而另一个操作数是集合,您需要制作一个二进制并使用否定的第二个操作数:
std::bitset<10> first (string("1001001001"));
std::bitset<10> second (string("1001000000"));
cout << (first & ~second) << endl;
于 2009-07-27T09:09:57.550 回答
1
使用 std::bitset 的 to ulong (unsigned long) 方法将两个位集转换为无符号长整数,减去无符号长整数,然后使用减法结果从结果中构造一个新的位集。
#include <bitset>
#include <iostream>
int main( )
{
std::bitset<10> b1 ( 77 );
std::bitset<10> b2 ( 55 );
unsigned long diff = b1.to_ulong() - b2.to_ulong();
std::bitset<10> result( diff );
std::cout << diff << std::endl;
std::cout << result << std::endl;
return 0;
}
于 2009-07-27T12:27:41.397 回答
1
我假设您指的是一个 128 位整数,并试图减去 2 个 128 位整数。我建议使用谷歌搜索 BigNum - 一个旨在处理大数字的库。您所追求的功能可能已经实现。
于 2009-07-27T09:44:48.023 回答