You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

对两个std::bitset执行异或运算结果异常,请求排查

问题分析与解决

你的问题出在bitset的初始化方式上:你赋值的10101010是十进制整数,不是二进制字面量。

十进制的10101010转换成二进制是10011010001010110011010,取低8位就是11010101——这就是你代码中a实际存储的二进制值。和全1的b(二进制11111111)异或后,结果自然是11010101,和你预期的不符。

要正确初始化你想要的二进制位,有两种方法:

方法1:使用二进制字面量(C++11及以上支持)

在二进制数前加0b前缀,明确告诉编译器这是二进制值:

#include <bitset>
#include <iostream>

int main() {
    std::bitset<8> a = 0b10101010;
    std::bitset<8> b = 0b11111111;

    std::cout << (a ^ b);
}

方法2:使用字符串初始化

直接用字符串形式传入二进制位,bitset会按字符串内容解析:

#include <bitset>
#include <iostream>

int main() {
    std::bitset<8> a("10101010");
    std::bitset<8> b("11111111");

    std::cout << (a ^ b);
}

运行以上任意一种代码,都会输出你预期的01010101。

内容的提问来源于stack exchange,提问作者mega_coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 14:17:03