鱼C论坛

 找回密码
 立即注册
查看: 2687|回复: 0

[技术交流] 位运算的二三栗子

[复制链接]
发表于 2019-11-28 12:27:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. 一:
  2. 判断整数的奇偶性
  3. 偶数:(2N) & 1 = 0;
  4. 奇数:(2N-1) & 1 = 1;
  5. 整数特性:
  6. 奇数二进制最低位是1;
  7. 偶数二进制最低位是0;

  8. 二:
  9. 交换两个变量a, b的值
  10. #include <iostream>
  11. int main(int argc, char const *argv[])
  12. {
  13.     int a = 5,b = 90;
  14.     a = a^b;
  15.     b = a^b;
  16.     a = a^b;
  17.     std::cout<<a<<" "<<b;
  18.     return 0;
  19. }
  20. ----------------------------------------------
  21. 90 5
  22. E:\Users\admin\Documents\VScode\Code>
  23. ==============================================
  24. 三:
  25. 消除数组中重复的整数a
  26. 使用特性
  27. a ^ a = 0
  28. a ^ 0 = a  
  29. ==============================================
  30. 四:
  31. 判断整数的二进制中1的个数,当只有一个是1这个整数是2的整数次方
  32. 使用特性
  33. 1 & 1 = 1;

  34. >>移动逐位比较
  35. #include <iostream>
  36. int main(int argc, char const *argv[])
  37. {
  38.     int count = 0;
  39.     int a = 10, t= 0, b = 1;
  40.     for (size_t i = 0; i < 32; i++)
  41.     {
  42.         if (((a>>i)&1) == 1)
  43.         {
  44.             count++;
  45.         }
  46.     }
  47.     std::cout<<count;
  48.     return 0;
  49. }

  50. #include <iostream>
  51. int main(int argc, char const *argv[])
  52. {
  53.     int count = 0;
  54.     int a = 10, t = 0, b = 1;
  55.     while (a != 0)
  56.     {
  57.         a = (a - 1) & a;
  58.         count++;
  59.     }
  60.     std::cout<<count;
  61.     return 0;
  62. }

  63. ----------------------------------------------
  64. 2
  65. E:\Users\admin\Documents\VScode\Code>
  66. ==============================================
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-3 13:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表