c – 这个xor的错误是什么
发布时间:2020-12-16 10:53:32 所属栏目:百科 来源:网络整理
导读:为什么,在C中使用这个xor时, int main() { bitset4 a=1100,b=0110,c; c = a ^ b; cout c; return 0;} 结果0100? 解决方法 那些常量不是二进制的,这就是原因. 1100十进制是10001001100二进制. 0110八进制是1001000二进制. (为什么八进制为第二个?因为以前导
为什么,在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二进制XORed和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; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |