当前位置: 首页 > news >正文

用非(~)和与()表示亦或(^)

异或的真值表分析

x y | x^y
0 0 |  0
0 1 |  1  
1 0 |  1
1 1 |  0
  1. 观察异或的特性:当x和y不同时为1时结果为1

  2. 用已有操作构造:我们只有 ~(非) 和 &(与)

  3. 关键洞察x ^ y = (x & ~y) | (~x & y)

    • x & ~y:x为1且y为0的情况

    • ~x & y:x为0且y为1的情况

    • 这两种情况的或就是异或

  4. 但题目不允许用 |,所以要用德摩根定律转换:

    • A | B = ~(~A & ~B)

完整推导

int bitXor(int x, int y) {// 步骤1:分别找出 x=1,y=0 和 x=0,y=1 的情况int part1 = x & ~y;  // x为1且y为0int part2 = ~x & y;  // x为0且y为1// 步骤2:用德摩根定律实现 OR 操作// part1 | part2 = ~(~part1 & ~part2)return ~(~part1 & ~part2);
}

验证例子:bitXor(4, 5)

  • 4 = 0100, 5 = 0101

  • part1 = 0100 & 1010 = 0000

  • part2 = 1011 & 0101 = 0001

  • ~part1 = 1111, ~part2 = 1110

  • ~part1 & ~part2 = 1110

  • ~(1110) = 0001 = 1 ✓

tmin - 返回最小补码整数

补码表示原理

  • 在32位补码中,最小整数是:0x80000000

  • 二进制:1000 0000 0000 0000 0000 0000 0000 0000

  • 十进制:-2,147,483,648

解题思路

最小补码整数的特点是:最高位为1,其他位为0

int tmin(void) {// 将1左移31位:000...001 → 100...000return 1 << 31;
}

验证

  • 1 << 31 = 0x80000000 = -2147483648 ✓

答案

int bitXor(int x, int y) {return ~(~(x & ~y) & ~(~x & y));
}
​
int tmin(void) {return 1 << 31;
}

重要概念总结

  1. 按位运算:直接操作整数的二进制位

  2. 德摩根定律~(A & B) = ~A | ~B~(A | B) = ~A & ~B

  3. 补码表示:最高位为符号位,最小负数只有符号位为1

  4. 移位操作:左移n位相当于乘以2^n

http://www.dtcms.com/a/488514.html

相关文章:

  • 郑州网站建设索q479185700济南网络公司哪家好
  • 性能测试+监控体系一站式搭建指南:从脚本设计到服务器资源全景监控
  • 网站还难做啊手机兼职软件
  • 网站后台程序如何做读书网站建设策划书
  • 如何使用二级域名做网站毛绒玩具东莞网站建设
  • PCIe协议之 PAM4 篇之格雷码应用,你真理解了吗?(二)
  • navigation2基础-lifecycle_node 的使用
  • 中国建设银行复核网站网上商城系统软件
  • 长沙网站建设推广服务嘉兴网站制作价格
  • 曲阜做网站哪家好营销方向有哪些
  • 作业 1
  • 一个算法题 吃火锅
  • 关于网站开发的商业计划书烟台公司网站建设
  • aspcms网站使用教程平面设计周记100篇
  • 徐州网站建设青州陈酿校园二手市场网站开发
  • 大航母网站建设服务不备案网站
  • 05--JavaScript基础语法(1)
  • 行业网站建设优化案例网站建设与维护 技能
  • ui网站模板网站开发需求报告模板下载
  • 腾讯云网站建设教学视频教程WordPress的Ajax插件
  • 成都网站建设爱特通建e网室内设计网怎么用
  • beanFactory快速入门
  • 提供企业网站建设公司千万pv网站开发成本
  • delphi 做直播网站百度营销后台
  • 做php网站前端价格泉州有那些网站建设公司
  • nginx做网站政务网站建设工作方案
  • 素材网站整站下载做网站运营有前途
  • 济南正规网站建设公司哪家好网站付费模板
  • Object类详解--finalize
  • 烟台企业网站制作公司宜昌网络推广公司