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

如何用C语言位运算实现对应位相等时返回1的功能?

实现对应位相等时结果位为1的位运算

你的需求是让两个数的对应位相等时,结果的该位为1,不等则为0。可以利用**异或(XOR)**的特性来实现简洁的位运算方案:

  • 异或运算x ^ y的规则是:对应位不同时结果为1,相同时为0,正好和你的需求逻辑相反。
  • 对异或结果取反~(x ^ y),就能得到对应位相同时为1、不同时为0的结果。注意要使用无符号整数类型,避免带符号数取反时符号位干扰结果。

用你的示例验证:

x = 251(二进制11111011),y = 18(二进制00010010)
x ^ y = 二进制11101001,取反后得到00010110,也就是十进制22,和你给出的结果r完全一致。

简洁的C语言实现代码

#include <stdio.h>

unsigned char equal_bits(unsigned char x, unsigned char y) {
    return ~(x ^ y);
}

int main() {
    unsigned char x = 251;
    unsigned char y = 18;
    unsigned char r = equal_bits(x, y);
    printf("x: %d (二进制 11111011)\ny: %d (二进制 00010010)\nr: %d (二进制 00010110)\n", x, y, r);
    return 0;
}

注意事项

  • 若使用带符号整数(如char而非unsigned char),取反操作会翻转符号位,导致结果不符合预期,位运算场景优先用无符号类型。
  • 如需处理更大的整数类型(如unsigned int、unsigned long),只需修改函数的参数和返回值类型,核心逻辑保持不变。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 16:32:06