Copied this from the reference page
bitset<4> first (string("1001"));
bitset<4> second (string("0011"));
cout << (first^=second) << endl; // 1010 (XOR,assign)
cout << (first&=second) << endl; // 0010 (AND,assign)
cout << (first|=second) << endl; // 0011 (OR,assign)
1001 bitwise AND 0011 is 0001, isn't it?
also how come 1001 bitwise OR 0011 turn out to be 0011?
also how come 1001 bitwise OR 0011 turn out to be 0011? |
It's not. 1001 OR 0011 is 1011
Look at the code. Notice that you're using the assignment operators (^=, &=, |=). So each time you're modifying
first
.
1 2 3 4 5 6 7 8
|
cout << (first^=second) << endl; // 1001 XOR 0011 = 1010
// first now == 1010
cout << (first&=second) << endl; // 1010 AND 0011 = 0010
// first now == 0010
cout << (first|=second) << endl; // 0010 OR 0011 = 0011
// first now == 0011
| |
EDIT: doh, too slow
Last edited on