下学期学算法,在网上报了个小课,在此记录一些笔记。比较杂乱,还望见谅。
位运算介绍
1.<<——左移,1011->10110,加一个0,相当于乘2。(位运算的操作直接对内存,速度比直接运算稍微快些,某种程度上可以取代直接运算)
2.>>——右移,1011->101,直接舍弃,相当于/2。
3.|——或运算。
4.&——与运算。
5.~——取反运算。
6.^——异或运算。(任何一个数, ^0不变, ^1取反)
对int型的数据进行位运算又要装换成二进制码,这又涉及到反码,补码等等,比较多,感兴趣的可自行去了解。
一定要注意位运算的优先级问题!!!容易被坑!!!
下面给出一点位运算的基础题目
1.去掉最后一位
——x>>1
2.在最后一位加一个0
——x<<1
3.在最后加一个1
——(x<<1)+1或(x<<1)|1
4.把最后一位变成1
——x|1
5.把最后一位变成0
——(x|1)-1
6.最后一位取反
——x^1
7.把右数第k位变成1
——x|(1<<k-1)
8.把右数第k位变成0
——x&(~(1<<k-1))
9.右数第k位取反
——x^(1<<k-1)
算法入门(1)-位运算基础
最新推荐文章于 2024-07-19 19:11:19 发布