我有2个位组,每个位存储100位。我试图简单地用' - '减去,但此时我总是得到一个编译错误。你如何在c ++中减去2个位集?
提前致谢
答案 0 :(得分:8)
如果你想清除第一个操作数中的所有位,那么你需要创建一个binnary并使用否定的第二个操作数:
std::bitset<10> first (string("1001001001"));
std::bitset<10> second (string("1001000000"));
cout << (first & ~second) << endl;
答案 1 :(得分:1)
我假设您指的是128位整数,并且正在尝试减去2个128位整数。我建议谷歌搜索BigNum - 一个旨在处理大数字的库。你所追求的功能可能已经实现。
答案 2 :(得分:0)
使用std :: bitset的to ulong(unsigned long)方法将两个bitset转换为unsigned long,减去unsigned long,然后使用减法结果构造一个结果中的新bitset。
#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;
}