Bitset 上的按位或给出错误的答案
Bitwise OR on Bitset giving wrong answer
#include<bits/stdc++.h>
using namespace std;
int main(){
bitset<5> num=01000;
bitset<5> n=00000;
bitset<5> result;
result=(n|num);
cout<<result;
}
答案应该是 1000
但它显示 00000
如果你想分配二进制数,那么你可以用双引号将它们括起来:
std::string binary_number = "1000";
std::bitset<5> num(binary_number);
std::bitset<5> n("0");
std::bitset<5> result;
result = (n | num);
std::cout << result;
但是如果你不想用双引号将它们括起来,那么你可以这样做:
std::bitset<5> num = 8;
std::bitset<5> n = 0;
std::bitset<5> result;
result = (n | num);
std::cout << result;
01000
是一个 octal 整数文字,其值为 512,5 个最低有效位为 0。与 00000
相同
因此 num
和 n
都将为 0
要将位集设置为 01000
二进制,您可以使用
bitset<5> num("01000")
bitset<5> num(0b01000)
使用 C++14's binary integer literal
- 或者只使用
bitset<5> num(0x10)
二进制文字有专门的概念 (since C++14):0b01000
而不是 01000
。
#include <bitset>
int main(int argc, char* argv[])
{
std::bitset<5> num = 0b01000;
std::bitset<5> n = 0b00000;
std::bitset<5> result;
result = (n | num);
std::cout << result << std::endl; // -> 01000
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int main(){
bitset<5> num=01000;
bitset<5> n=00000;
bitset<5> result;
result=(n|num);
cout<<result;
}
答案应该是 1000 但它显示 00000
如果你想分配二进制数,那么你可以用双引号将它们括起来:
std::string binary_number = "1000";
std::bitset<5> num(binary_number);
std::bitset<5> n("0");
std::bitset<5> result;
result = (n | num);
std::cout << result;
但是如果你不想用双引号将它们括起来,那么你可以这样做:
std::bitset<5> num = 8;
std::bitset<5> n = 0;
std::bitset<5> result;
result = (n | num);
std::cout << result;
01000
是一个 octal 整数文字,其值为 512,5 个最低有效位为 0。与 00000
因此 num
和 n
都将为 0
要将位集设置为 01000
二进制,您可以使用
bitset<5> num("01000")
bitset<5> num(0b01000)
使用 C++14's binary integer literal- 或者只使用
bitset<5> num(0x10)
二进制文字有专门的概念 (since C++14):0b01000
而不是 01000
。
#include <bitset>
int main(int argc, char* argv[])
{
std::bitset<5> num = 0b01000;
std::bitset<5> n = 0b00000;
std::bitset<5> result;
result = (n | num);
std::cout << result << std::endl; // -> 01000
return 0;
}