与位运算有关的算法题思路总结
来源:互联网 发布:单片机驱动无源蜂鸣器 编辑:程序博客网 时间:2024/05/17 23:08
位运算是把数字用二进制表示之后,对每一位上0或者1的运算。
理解位运算的第一步是理解二进制。二进制是指数字的每一位都是0或者1.比如十进制的2转换为二进制后是10,而十进制的10转换成二进制是1010。
位运算总共有五种运算:与(&)、或(|)、异或(^)、左移(<<)和右移(>>)。这里重点说一下左移和右移,另外三种运算请详见http://blog.csdn.net/a834352982/article/details/73123911。
左移运算符m<<n
表示把m左移n位。左移n位的时候,最左边的n位将被丢弃,同时在最右边补上n个0。比如:
00001010<<2=00101000
10001010<<3=01010000
右移运算符m>>n
表示把m右移n位。右移n位的时候,最右边的n位将被抛弃。但右移时处理最左边位的情形要稍微复杂一些。如果数字是一个无符号数值,则用0填补最左边的n位,如果数字是一个有符号数值,则用数字的符号位填补最左边的n位。比如:
00001010>>2=00000010
10001010>>3=11110001
下面是一个关于位运算面试题的总结:
把一个整数减去1之后再和原来的整数做位与运算,得到的结果相当于把整数的二进制表示中的最右边的一个1变成0。
以1100为例,1100减去1之后的结果是1011,把1100和1011做位与运算,得到的结果是1000。把1100最右边的1变成了0,结果刚好是1000。
很多二进制的问题都可以用这个思路解决。比如统计一个数的二进制表示中有几个1、用一条语句判断一个整数是不是2的整数次方(如果一个整数是2的整数次方,那么它的二进制表示有且只有一位是1)。
- 与位运算有关的算法题思路总结
- 有关位运算的基础知识总结
- 有关位运算的笔记
- 两个与位运算有关的小问题【面试题】
- 有关面试中常见位运算总结
- 算法求解方法与思路的总结
- 与位运算相关的编程算法技巧的总结java实现
- 位运算的总结
- 有关位操作的总结
- Time33算法与位运算
- 位运算 与逻辑运算 总结!
- 有关位运算_ICS的一次Lab
- [C++]有关位运算的知识
- 一道位运算的算法题
- 一道位运算的算法题
- 做算法题思路的一些总结
- 剑指offer面试题10:二进制中1的个数(与位运算有关)
- 位运算的一些算法
- 我的第一篇博客
- Android下面打印进程函数调用堆栈(dump backtrace)的方法
- C++类内存分布 通过Visual studio 2013查看
- 在NT中直接访问物理内存
- 找出奇数个数中唯一出现一次的数
- 与位运算有关的算法题思路总结
- 一文看懂25个神经网络模型
- eclipse 工作空间的高效使用
- leetcode algorithm1 twoSum
- 实战DeviceIoControl 之七:在Windows 9X中读写磁盘扇区
- 学习淘淘商城第一百零四课(生成订单)
- mysql 创建用户 远程登录数据库
- 短信监听2
- 序列交换