判断一个正整数X是否为2N,即是否为2的N次方(2,4,8,…)。除了使用循环语句(或者迭代)进行除2取余运算外,也可以采用位运算。考虑到2,4,8…这样的整数转化为二进制数是10,100,1000,…。如果X是2的N次方,比如2,4,8,那么X减1之后的二进制数则分别为1,11,111。与X作与运算,结果为零。利用此方法,可以写一个判断整数X是否为2的N次方的程序。

#include<iostream>
using namespace std;int main(){int x = 0;while(1){cout << "输入一个正整数: ";cin >> x;if(x&(x-1))cout << x << "不是2的N次方整数!" << endl; elsecout << x << "是2的N次方整数!" << endl;}return 0;
}

执行结果:

求一个正整数X转化为二进制数后,包含的数字“1”的个数(包含0的个数须分多种情况讨论)。使用位运算来实现算法,考虑到整数X的二进制数减1之后,最右边的“1”位会变成“0”,而其之后原先所有的“0”将变成“1”。那么,每进行一次X&(X-1),将消除二进制数中最右的一个“1”。这样,可以通过X&(X-1)运算直行至结果为0时的次数求出二进制数中“1”的个数。

#include<iostream>
using namespace std;int func(int x);
int main(){int x;while(1){cout << "输入一个正整数:";cin >> x;cout << "转换为二进制数后包含 '1'的个数为:" << func(x) <<endl;}return 0;
}int func(int a){int count = 0;while(a){count ++;a&=(a-1);}return count;
}

执行结果:

如何利用位运算实现整数的加减法呢?对于正整数X和Y,X&Y则是提取两者二进制数相同位值的与,这个结果是X、Y相同值位的二进制数的一半。而X^Y则是提取出X和Y不同位值的异或,得到结果是X、Y不同值位的二进制数。X+Y的结果可以看做相同值位二进制数与不同值位二进数之和。函数原型:

int Add(int x, int y){
return((x&y)<<1)+(x^y);  //(x&y)<<1中<<1位移相当于乘以2;
}

涉及位操作的算法辑录相关推荐

  1. 位操作在算法中的运用

    位操作在算法中的运用 1. 与操作& 100 & 111 = 100 2. 或操作| 100 | 000 = 100 3. 异或^ 100 ^ 000 = 100 4. 取反~ ~10 ...

  2. C语言幸运星课程设计,涉及约瑟夫环算法,多个版本

    C语言幸运星课程设计,涉及约瑟夫环算法,多个版本,放于多个分支. 使用及转载请标明出处(最好点个赞及star哈哈) 版本1使用链表,函数传参 版本2使用链表,空参函数,全局变量 版本3使用动态数组 码 ...

  3. 金融风控实战——风控领域涉及到的算法和风控算法工程师需要具备的能力

    一些简单的介绍 市面上算法相关的岗位,从大范围上分为两大类 1.研究驱动的算法工程师,这类算法工程师的门槛很高,分布在大型公司的研究院.创新实验室等部门,这类算法工程师主要是以研究新的算法或者是更好的 ...

  4. ERP 开发过程中涉及到的算法 库存,工程,生产计划,固定资产计算方法

    ERP系统涉及到的单据数量多,一些单据的数据之间只有简单的计算方法,比如 金额=数量*单价 如果涉及税,则金额=数量*单价 + 税金 如果涉及折扣,则金额=数量*单价 + 税金 - 折扣 下面总结一下 ...

  5. 6月6本程序员新书将与您见面,涉及Spring、算法、JavaScript等

    小编好像很久没有发过新书播报了,今天给大家分享即将上架的10本新书.我猜Spring.算法.今天给大家分享6月份即将上架的6本新书.Spring.算法.JavaScript你们稀罕哪一本? 1.数据结 ...

  6. 平衡二叉树所涉及的一些算法

    今晚整那个ubuntu,什么也没弄成,唉,把算法先保留一下吧, 插入函数还没理解透彻呢 #include<stdio.h> #include<stdlib.h>#define ...

  7. STL之涉及到的算法

    一.非变异算法 是一组不破坏操作数据的模板函数,用来对序列数据进行逐个处理.元素查找.子序列搜索.统计和匹配.非变异算法具有极为广泛的适用性,基本上可应用与各种容器. 1查找容器元素find 它用于查 ...

  8. python数据结构与算法总结

    python常用的数据结构与算法就分享到此处,本月涉及数据结构与算法的内容有如下文章: <数据结构和算法对python意味着什么?> <顺序表数据结构在python中的应用> ...

  9. 肤色检测算法 - 基于不同颜色空间简单区域划分的皮肤检测算法

    由于能力有限,算法层面的东西自己去创新的很少,很多都是从现有的论文中学习,然后实践的. 本文涉及的很多算法,在网络上也有不少同类型的文章,但是肯定的一点就是,很多都是不配代码的,或者所附带的代码都是象 ...

最新文章

  1. vs2015编译linux源码,使用Visual Studio 2017(VS2017)编译OpenCC 1.0.4 (Open Chinese Convert)源代码...
  2. python基础---元组、字典、函数、文件、异常
  3. 以太坊区块链Ethereum开发资料汇总
  4. HTML语义化:HTML5新标签——template
  5. C#编码简单性之代码篇(如何编写简短的C#代码,随时更新)
  6. NGUI UIRoot原理分析
  7. 数值分析 使用c语言 源码_分析源码,学会正确使用 Java 线程池
  8. Win11更新22000.100后面部识别不可用怎么办
  9. 放大电路分析方法、图解法分析放大电路
  10. poj1182(并查集)
  11. 掌握技巧可以快速完成网站备案
  12. json在线解析(json在线解析)
  13. keyshot渲染玻璃打光_keyshot打光技巧,教你如何制作汽车自由式布光效果
  14. Qt编写地图综合应用3-省市区域图
  15. win10wifi开关自动弹回_win10wlan开关自动弹回
  16. php pdf文档内容修改,php2pdf - 如何使用php修改pdf中的内容,并且保证格式不乱
  17. 《Adobe Illustrator CS6中文版经典教程(彩色版)》—第1课1.14节在多个画板之间导航...
  18. 十二道锋味——既是食,也是人
  19. 2021寒假MISC打卡DAY2
  20. InvalidKeyException: Illegal key size异常解决方案

热门文章

  1. 客快物流大数据项目(五十二):根据数据库表及字段创建公共模块
  2. linux7怎样搭建zabbix,Centos7.0 搭建Zabbix环境
  3. HarmonyOS shape 的使用
  4. getIntExtra() 获取传递过来的int 值总是默认值
  5. 赋值语句和赋值表达式
  6. Spring配置文件中注入复杂类型属性
  7. 根据进程名杀死进程 -kill进程名
  8. Python Web学习笔记之Python多线程基础
  9. Centos 6启动流程详解
  10. poj_3067 树状数组