• 利用一个宏实现两个数的交换?
  • 不使用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,面试宝典,牛客网)相关推荐

  1. 剑指offer 面试32题

    面试32题: 题目:从上到下打印二叉树 题:不分行从上到下打印二叉树 解题代码: # -*- coding:utf-8 -*- # class TreeNode: # def __init__(sel ...

  2. 剑指Offer——面试小提示(持续更新中)

    (1)应聘者在电话面试的时候应尽可能用形象的语言把细节说清楚. (2)如果在英语面试时没有听清或没有听懂面试官的问题,应聘者要敢于说Pardon. (3)在共享桌面远程面试中,面试官最关心的是应聘者的 ...

  3. 剑指Offer面试题解总结21-30

    目录 剑指Offer(21~30) 调整数组顺序使奇数位于偶数前面 链表中倒数第k个节点 反转链表 合并两个有序的链表 树的子结构 二叉树的镜像 对称的二叉树 顺时针打印矩阵 包含min函数的栈 剑指 ...

  4. 剑指Offer面试题解总结11-20

    目录 剑指Offer(11~20) 旋转数组中的最小数字 矩阵中的路径 剪绳子 剪绳子II 二进制中1的个数 数值的整数次方 打印从1到最大的n位数 删除链表的节点 正则表达式匹配 表示数值的字符串 ...

  5. 剑指Offer面试算法题Java实现

    面试题3 /*** 二维数组的查找* @author acer**/ public class _03FindInPartiallySortedMatrix {public static boolea ...

  6. 剑指offer 面试16题

    面试16题: 题目:数值的整数次方 题:实现函数double Power(double base, int exponent),求base的exponent次方.不得使用库函数,同时不需要考虑大数问题 ...

  7. 剑指offer 面试3题

    面试3题: 题:数组中重复的数字 题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个重复 ...

  8. 剑指offer 面试36题

    面试36题: 题:二叉搜索树与双向链表 题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的结点,只能调整树中结点指针的指向. 解题思路一:由于输入的一个二叉搜索树, ...

  9. 剑指offer 面试31题

    面试31题: 题目:栈的压入.弹出元素 题:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序 ...

最新文章

  1. Leangoo阶段式硬件产品开发流程
  2. 智能调温需要哪些计算机知识,一种智能调温的计算机用鼠标的制作方法
  3. ASP.NET下载网络图片
  4. 计算机应用教程第9,计算机应用教程(第8版)第六章
  5. Liferay Dynamic CSS Filter方法的研究 - 总体过程
  6. shell脚本--部署应用到tomcat并启动tomcat
  7. L3_01 01背包和最小序列
  8. 《C Primer Plus(第6版)中文版》一2.12 编程练习
  9. 300+篇CVPR 2020代码开源的论文(转载)
  10. java覆盖写入_java写入文件(覆盖和续写)
  11. exls表格搜索快捷键_excel表格查找快捷键|excel表格的常用功能快捷键介绍
  12. 在家佛弟子对待工作的态度——世俗八正道
  13. html5谷歌地图,谷歌地图API和HTML 5
  14. C# 自定义动态九宫格键盘,简单实用
  15. 大数据开发治理平台 DataWorks
  16. python2.7安装pyqt5版本,py3
  17. 摸鱼时间做了一个外卖领红包 h5,外卖红包小程序
  18. Hibernate 多表映射(Mybatis,Springjdbc,Hibernate ,JDBC的多表映射学习比较)
  19. 【SQL Server系列】_01数据库系统概述
  20. ORACLE EBS出现In order to access this application, you must install the J2SE Plugin version 1.6.0_07

热门文章

  1. 一个切图仔的 CSS 笔记
  2. Maven私服(Nexus)搭建总结
  3. mock接口开发,excel(读,写,修改)
  4. 可以添加自定义的Select控件
  5. LintCode 387: Smallest Difference
  6. mybatis入门-新手注意问题
  7. QT mainwindow四件套
  8. 【SQL】sql版Split函数。用于拆分字符串为单列表格
  9. 关于Asp.Net开发中导入外部JavaScript文件的问题
  10. rds基于什么开发_IaaS、PaaS、SaaS、DaaS都是什么?现在怎么样了?终于有人讲明白了...