1

我有 2个位,每个位集存储 100 位。如何减去它们,将它们视为无符号数?

4

3 回答 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 回答