运算符面试题(剑指offer,面试宝典,牛客网)
- 利用一个宏实现两个数的交换?
- 不使用if,?,switch或者其他判断语句比较两个变量的大小?
- 利用位运算实现加法?
- 以下程序输出结果是?
- 用位运算实现求平均数?
- 不用循环判断一个数是不是2的N次方?
利用一个宏实现两个数的交换?
#include <iostream>
using namespace std;#define SWAP(a, b)
{char tempbuf[10]; memcpy(tempbuf, &a, sizeof(a)); memcpy(&a, &b, sizeof(b)); memcpy(&b, tempbuf, sizeof(b));
}int main()
{int a = 2;int b = 10;SWAP(a, b);cout<<a<<endl;cout<<b<<endl;return 0;
}
不使用if,?,switch或者其他判断语句比较两个变量的大小?
#include <iostream>
using namespace std;bool fun(int a, int b)
{return a > b;
}int max(int a, int b)
{bool flag = fun(a, b);return flag * a + (1 - flag) * b;//巧妙
}int main()
{return 0;
}
#include <iostream>
using namespace std;int max(int a, int b)
{return ((a + b) + abs(a - b)) / 2;
}int main()
{int a = 2;int b = 5;int n = max(a, b);cout<<n<<endl;return 0;
}
利用位运算实现加法?
#include <iostream>
using namespace std;int Add(int a, int b)
{if(b == 0){return a;}int sum, carry;sum = a ^ b;carry = (a & b) << 1;return Add(sum, carry);
}int main()
{int a = 10;int b = 245;cout<<Add(a, b)<<endl;return 0;
}
以下程序输出结果是?
#include <iostream>
using namespace std;int main()
{unsigned char a = 0xa5; //首先是1010 0101unsigned char b = ~a >> 4 + 1; //~优先级位于第2 >> 位于第6 +位于第5 所以先取反,然后计算出5,然后右移5位//a 取反 0101 1010 但是会发生整数提升,即a提升为int型,即左边补24个0,这时再右移5位变成//左边24个1 加上 0101 1010,由于char是一个字节,所以取8位变成 1111 1010 即250//cout<<b<<endl;printf("%d\n", b);return 0;
}
用位运算实现求平均数?
#include <iostream>
using namespace std;int Average(int x, int y)
{return (x & y) + ((x ^ y) >> 1);
}int main()
{int a = 10;int b = 30;cout<<Average(a, b)<<endl;return 0;
}
不用循环判断一个数是不是2的N次方?
#include <iostream>
using namespace std;int main()
{unsigned int a = 0;cout<<"Please input a number:";cin>>a;if((a & (a - 1)) == 0){cout<<"yes"<<endl;}else{cout<<"no"<<endl;}return 0;
}
运算符面试题(剑指offer,面试宝典,牛客网)相关推荐
- 剑指offer 面试32题
面试32题: 题目:从上到下打印二叉树 题:不分行从上到下打印二叉树 解题代码: # -*- coding:utf-8 -*- # class TreeNode: # def __init__(sel ...
- 剑指Offer——面试小提示(持续更新中)
(1)应聘者在电话面试的时候应尽可能用形象的语言把细节说清楚. (2)如果在英语面试时没有听清或没有听懂面试官的问题,应聘者要敢于说Pardon. (3)在共享桌面远程面试中,面试官最关心的是应聘者的 ...
- 剑指Offer面试题解总结21-30
目录 剑指Offer(21~30) 调整数组顺序使奇数位于偶数前面 链表中倒数第k个节点 反转链表 合并两个有序的链表 树的子结构 二叉树的镜像 对称的二叉树 顺时针打印矩阵 包含min函数的栈 剑指 ...
- 剑指Offer面试题解总结11-20
目录 剑指Offer(11~20) 旋转数组中的最小数字 矩阵中的路径 剪绳子 剪绳子II 二进制中1的个数 数值的整数次方 打印从1到最大的n位数 删除链表的节点 正则表达式匹配 表示数值的字符串 ...
- 剑指Offer面试算法题Java实现
面试题3 /*** 二维数组的查找* @author acer**/ public class _03FindInPartiallySortedMatrix {public static boolea ...
- 剑指offer 面试16题
面试16题: 题目:数值的整数次方 题:实现函数double Power(double base, int exponent),求base的exponent次方.不得使用库函数,同时不需要考虑大数问题 ...
- 剑指offer 面试3题
面试3题: 题:数组中重复的数字 题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个重复 ...
- 剑指offer 面试36题
面试36题: 题:二叉搜索树与双向链表 题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的结点,只能调整树中结点指针的指向. 解题思路一:由于输入的一个二叉搜索树, ...
- 剑指offer 面试31题
面试31题: 题目:栈的压入.弹出元素 题:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序 ...
最新文章
- Leangoo阶段式硬件产品开发流程
- 智能调温需要哪些计算机知识,一种智能调温的计算机用鼠标的制作方法
- ASP.NET下载网络图片
- 计算机应用教程第9,计算机应用教程(第8版)第六章
- Liferay Dynamic CSS Filter方法的研究 - 总体过程
- shell脚本--部署应用到tomcat并启动tomcat
- L3_01 01背包和最小序列
- 《C Primer Plus(第6版)中文版》一2.12 编程练习
- 300+篇CVPR 2020代码开源的论文(转载)
- java覆盖写入_java写入文件(覆盖和续写)
- exls表格搜索快捷键_excel表格查找快捷键|excel表格的常用功能快捷键介绍
- 在家佛弟子对待工作的态度——世俗八正道
- html5谷歌地图,谷歌地图API和HTML 5
- C# 自定义动态九宫格键盘,简单实用
- 大数据开发治理平台 DataWorks
- python2.7安装pyqt5版本,py3
- 摸鱼时间做了一个外卖领红包 h5,外卖红包小程序
- Hibernate 多表映射(Mybatis,Springjdbc,Hibernate ,JDBC的多表映射学习比较)
- 【SQL Server系列】_01数据库系统概述
- ORACLE EBS出现In order to access this application, you must install the J2SE Plugin version 1.6.0_07