作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
为什么,在 C++ 中使用这个 xor 时,
int main() {
bitset<4> a=1100, b=0110,c;
c = a ^ b;
cout << c;
return 0;
}
结果是0100吗?
最佳答案
这些常量不是二进制的,这就是原因。 1100 十进制是 10001001100
二进制。 0110 八进制 是 1001000
二进制。 (为什么第二个是八进制的?因为以前导零开头且仅由数字 0..7 组成的常量在 C++ 中是八进制的。)
当您将两者截断为 4 位时,您将得到 1100
二进制与 1000
二进制异或,得到 0100
二进制。
试试这个(假设你的编译器支持二进制文字的非标准前缀 0b
):
int main() {
bitset<4> a=0b1100, b=0b0110,c;
c = a ^ b;
cout << c;
return 0;
}
或者,以十六进制指定常量:
int main() {
bitset<4> a=0xC, b=0x6,c;
c = a ^ b;
cout << c;
return 0;
}
或作为字符串常量:(C++11)
int main() {
bitset<4> a( "1100" ), b( "0110" ),c;
c = a ^ b;
cout << c;
return 0;
}
关于c++ - 这个异或有什么错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20458276/
我是一名优秀的程序员,十分优秀!