面试题之位运算的巧妙应用
来源:互联网 发布:nginx 线程池配置 编辑:程序博客网 时间:2024/04/27 22:40
1、判断一个数是否是2的N次方
题目要求:用一个表达式,判断一个数X是否是2的N次方,即2,4,8,16……等,要求不可以用循环语句。
解析:2,4,8,16这样的数转化成二进制是10,100,1000,10000。
题目要求:将a,b两个数的值进行交换,并且不使用任何的中间变量。
解法1:
a = a+b;
b = a-b;
a = a-b;
解法2:采用异或位运算。
异或运算:相同为0,相异为1。
a = a^b;//a变为一个相同为0,相异为1的结果
b = a^b;//该结果和b做运算,得到原来的a
a = a^b;//该结果和a做运算,得到原来的b
题目要求:用一个表达式,判断一个数X是否是2的N次方,即2,4,8,16……等,要求不可以用循环语句。
解析:2,4,8,16这样的数转化成二进制是10,100,1000,10000。
如果X减去1后(低一位并且二进制的每一位都是1),这个数与X做与运算,答案若是0,则X是2的N次方。
题目要求:将a,b两个数的值进行交换,并且不使用任何的中间变量。
解法1:
a = a+b;
b = a-b;
a = a-b;
解法2:采用异或位运算。
异或运算:相同为0,相异为1。
a = a^b;//a变为一个相同为0,相异为1的结果
b = a^b;//该结果和b做运算,得到原来的a
a = a^b;//该结果和a做运算,得到原来的b
0 0
- 面试题之位运算的巧妙应用
- 位运算的巧妙应用
- 位的巧妙应用
- 用位运算的一些面试题
- 位运算的巧妙运用
- 位运算的巧妙使用
- 位运算的巧妙运用
- 位运算的巧妙设计
- 巧妙的位运算及模运算
- 百度面试题之找出数组中之出现一次的两个数(异或的巧妙应用)
- 位逻辑运算的巧妙应用
- 面试题中的位运算
- 【面试题-J2SE】位运算
- 位运算面试题总结
- 位运算相关面试题
- 位运算面试题总结
- 位运算常见面试题
- 剑指offer笔试面试题之——位运算
- CCF 集合竞价
- 链表排序
- 异常:org.hibernate.HibernateException: 'hibernate.dialect' must be set when no Connection available
- 堆与堆排序
- jQuery源码之$.data()数据缓存
- 面试题之位运算的巧妙应用
- POJ 1321 棋盘问题(搜索)
- git 简单使用
- 数据库字段更换名称且字段值同时更改
- 事件驱动异步模式
- MFC-静态变量及方法例程
- C++ vector,list,dequeue,stack 存储结构浅析
- 面向对象编程?没有对象你编毛程序!!!
- 46.多线程