涉及位操作的算法辑录
判断一个正整数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. 与操作& 100 & 111 = 100 2. 或操作| 100 | 000 = 100 3. 异或^ 100 ^ 000 = 100 4. 取反~ ~10 ...
- C语言幸运星课程设计,涉及约瑟夫环算法,多个版本
C语言幸运星课程设计,涉及约瑟夫环算法,多个版本,放于多个分支. 使用及转载请标明出处(最好点个赞及star哈哈) 版本1使用链表,函数传参 版本2使用链表,空参函数,全局变量 版本3使用动态数组 码 ...
- 金融风控实战——风控领域涉及到的算法和风控算法工程师需要具备的能力
一些简单的介绍 市面上算法相关的岗位,从大范围上分为两大类 1.研究驱动的算法工程师,这类算法工程师的门槛很高,分布在大型公司的研究院.创新实验室等部门,这类算法工程师主要是以研究新的算法或者是更好的 ...
- ERP 开发过程中涉及到的算法 库存,工程,生产计划,固定资产计算方法
ERP系统涉及到的单据数量多,一些单据的数据之间只有简单的计算方法,比如 金额=数量*单价 如果涉及税,则金额=数量*单价 + 税金 如果涉及折扣,则金额=数量*单价 + 税金 - 折扣 下面总结一下 ...
- 6月6本程序员新书将与您见面,涉及Spring、算法、JavaScript等
小编好像很久没有发过新书播报了,今天给大家分享即将上架的10本新书.我猜Spring.算法.今天给大家分享6月份即将上架的6本新书.Spring.算法.JavaScript你们稀罕哪一本? 1.数据结 ...
- 平衡二叉树所涉及的一些算法
今晚整那个ubuntu,什么也没弄成,唉,把算法先保留一下吧, 插入函数还没理解透彻呢 #include<stdio.h> #include<stdlib.h>#define ...
- STL之涉及到的算法
一.非变异算法 是一组不破坏操作数据的模板函数,用来对序列数据进行逐个处理.元素查找.子序列搜索.统计和匹配.非变异算法具有极为广泛的适用性,基本上可应用与各种容器. 1查找容器元素find 它用于查 ...
- python数据结构与算法总结
python常用的数据结构与算法就分享到此处,本月涉及数据结构与算法的内容有如下文章: <数据结构和算法对python意味着什么?> <顺序表数据结构在python中的应用> ...
- 肤色检测算法 - 基于不同颜色空间简单区域划分的皮肤检测算法
由于能力有限,算法层面的东西自己去创新的很少,很多都是从现有的论文中学习,然后实践的. 本文涉及的很多算法,在网络上也有不少同类型的文章,但是肯定的一点就是,很多都是不配代码的,或者所附带的代码都是象 ...
最新文章
- vs2015编译linux源码,使用Visual Studio 2017(VS2017)编译OpenCC 1.0.4 (Open Chinese Convert)源代码...
- python基础---元组、字典、函数、文件、异常
- 以太坊区块链Ethereum开发资料汇总
- HTML语义化:HTML5新标签——template
- C#编码简单性之代码篇(如何编写简短的C#代码,随时更新)
- NGUI UIRoot原理分析
- 数值分析 使用c语言 源码_分析源码,学会正确使用 Java 线程池
- Win11更新22000.100后面部识别不可用怎么办
- 放大电路分析方法、图解法分析放大电路
- poj1182(并查集)
- 掌握技巧可以快速完成网站备案
- json在线解析(json在线解析)
- keyshot渲染玻璃打光_keyshot打光技巧,教你如何制作汽车自由式布光效果
- Qt编写地图综合应用3-省市区域图
- win10wifi开关自动弹回_win10wlan开关自动弹回
- php pdf文档内容修改,php2pdf - 如何使用php修改pdf中的内容,并且保证格式不乱
- 《Adobe Illustrator CS6中文版经典教程(彩色版)》—第1课1.14节在多个画板之间导航...
- 十二道锋味——既是食,也是人
- 2021寒假MISC打卡DAY2
- InvalidKeyException: Illegal key size异常解决方案