memset #include stdio.h #include string.h int main() { char ch[] = "abcd"; memset(ch, '0', 4); // string.h printf("%s\n", ch); // 0000 return 0; } bitset #include iostream #include bitset int main() { const int n = 10; std::bitsetn b(9); st
memset
#include <stdio.h>#include <string.h>
int main()
{
char ch[] = "abcd";
memset(ch, '0', 4); // string.h
printf("%s\n", ch); // 0000
return 0;
}
bitset
#include <iostream>#include <bitset>
int main()
{
const int n = 10;
std::bitset<n> b(9);
std::cout << b << std::endl;// 0000000111
std::cout << b.any() << std::endl;// 1 是否存在置为1的二进制位
std::cout << b.none() << std::endl;// 0 不存在置为1的二进制位吗?
std::cout << b.count() << std::endl;// 3 置为1的二进制位个数
std::cout << b.size() << std::endl;// 10 二进制位数
std::cout << b[2] << std::endl;// 1 访问第2位二进制位
std::cout << b.test(2) << std::endl;// 1 pos处二进制是否为1
//下面的操作会直接影b
std::cout << b.set() << std::endl;// 1111111111 把b中所有二进制位置为1
std::cout << b.set(4) << std::endl;//1111111111 把b中pos位二进制位置为1
std::cout << b.reset() << std::endl;// 0000000000 清零
std::cout << b.flip() << std::endl;// 1111111111 诸位取反
std::cout << b.flip(4) << std::endl;// 1111101111 pos位取反
std::cout << b.to_ulong() << std::endl;// 1007
const int n = 2;
std::bitset<n> b1(1), b2(2), b3;
std::cout << b1 << " " << b2 << std::endl; //01 10
b3 = b1&b2;
std::cout << b3 << std::endl;//00
b3 = b1 | b2;
std::cout << b3 << std::endl;//11
b3 = b1 ^ b2;
std::cout << b3 << std::endl;//11
return 0;
}