这是一道微软的面试题;

int func(x)
{
int countx =0;
while(x)
{
countx ++;
x = x&(x-1);
}
return countx;
}

假定x = 9999。 答案:8
思路:将x转化为2进制,看含有的1的个数。

并不是太理解;下面来做一个MFC程序,把运算步骤中间结果输出了看一下;

VC新建一个单文档工程;

函数体加入输出语句,加到视类CPP文件的尾部;

int func(int x, CDC* pDC)
{int rows = 0;  //输出行CString str1;int countx =0;while(x){countx ++;x = x&(x-1);str1.Format("%d",x);pDC->TextOut(20, 20+rows*30, str1);str1.Format("%d",x-1);pDC->TextOut(120, 20+rows*30, str1);str1.Format("%d",x&(x-1));pDC->TextOut(220, 20+rows*30, str1);rows = rows + 1;}return countx;
}

函数声明加到视类CPP文件的头部;

int func(int, CDC*);

在OnDraw()函数中调用;

void CMstestView::OnDraw(CDC* pDC)
{CMstestDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);// TODO: add draw code for native data hereint cnt = func(9999, pDC);
}

运行一下;

看一下一共输出了8行,运算8次之后x为0,退出while,返回运算次数;结果为8;

一道微软面试题的运算过程解析相关推荐

  1. 数位DP--由一道微软笔试题引起

    前天晚上,一位研三的学长突然跑到我们宿舍,问我们一道微软笔试题.给你一个整数n,求出1到n这个区间范围内包含数字0的个数,例如当n=10的时候就只有10包含0,输出1,n=90就输出9.唯一的要求是此 ...

  2. 答与微博前端教主在吃饭时讨论到的一道微软面试题

    加引号是因为我不知道是否真是微软面试题.题目是这样的: 有一车在某无限长公路上行驶,其起始位置和单位时间内速度均为有限大整数(正负不确定), 现有一仪器,在每一时间单位内可以探测1次车是否在指定位置, ...

  3. 一道微软面试题的Java解法

    问题:你有4瓶药.每粒药丸的重量是固定的,不过其中有一瓶药受到了污染,药丸的重量发生了变化,每个药丸增加了一点重量.你怎样一下子测出哪瓶药是遭到污染的呢? Java代码: 代码 package cn. ...

  4. 解读一道微软经典面试题:海盗分宝石

    这是微软的一道经典的试题,大约是2008年左右的时候出的.这个题目虽然已经过了十多年了,但是仍然是一道非常经典的试题,值时不时拿出来看一看. 问题描述 五个海盗抢到了100颗宝石.他们决定按以下的规则 ...

  5. 历史上最简单的一道Java面试题,但无人能通过

    作者:方志宏 来源:zhuanlan.zhihu.com/p/57859872 这可能是历史上最简单的一道java面试题了. 题目很简单,完成代码,判断一个整数是否是奇数: public boolea ...

  6. 微软面试题:站在地球上的某一点,向南走一公里,然后向东走一公里,最后向北走一公里,回到了原点。地球上有多少个满足这样条件的点?

    微软面试题:站在地球上的某一点,向南走一公里,然后向东走一公里,最后向北走一公里,回到了原点.地球上有多少个满足这样条件的点? 分析:这是一道智力题.从逻辑上来讲,题目从好像缺少了一次向西的过程,才可 ...

  7. 2017安徽省计算机一级试题,2017年计算机一级练习试题「附答案解析」

    <2017年计算机一级练习试题「附答案解析」>由会员分享,可在线阅读,更多相关<2017年计算机一级练习试题「附答案解析」(10页珍藏版)>请在装配图网上搜索. 1.2017年 ...

  8. 2021-02-252021 互联网大厂年度总结1000+道高频面试题(附答案解析)冲刺2021

    2021 互联网大厂年度总结1000+道高频面试题(附答案解析)冲刺2021 1.String类能不能被继承?为什么? 不能 因为string类是被final修饰的类,final修饰过的类不能被继承. ...

  9. 输入url到页面加载都发生了什么事情?(一道软件测试面试题)

    文章首发于公众号:软件测试er 输入url到页面加载都发生了什么事情?这是一道软件测试面试题,且相关知识其实还有多种问法: Question 1请讲一下tcp三次握手 OK等你把这个记好了,下次面试: ...

最新文章

  1. 【阿里云域名】我都有服务器了,为什么还要购买域名?
  2. python selenium webdriver_Python:selenium.webdriver问题(服务器上没有X)
  3. server长时间运行query,Ajax刷新被block
  4. [snmp++]读取cisco路由交换机信息[一] - 环境搭建
  5. javafx之TableView的TaleCell
  6. 百度前端学院参考答案:第二十五天到第二十七天 倒数开始 滴答滴 滴答滴(2)...
  7. linux yast 软件管理_系统管理工具 Spacewalk
  8. 微信网页开发 thinkphp5.0的try-catch和重定向
  9. Netsuite Foreign Currency Revaluation 外币评估
  10. Ubuntu下安装Fcitx和美化Fcitx,解决方框错误.
  11. STM8S——watchdog(IWDG)
  12. linux文本编辑器字体大小,怎样将Linux中gcc文本编辑器的字体放大
  13. 数据库 --- 约束
  14. VTK Camera
  15. Simulink步长选择
  16. 《因子投资 - 方法与实践》新书上市
  17. Esri中国虾神卢拜年贴
  18. 认识中药(4)--陈皮
  19. Elixir元编程-第三章 编译时代码生成技术进阶
  20. 乐高机器人纲要_人工智能与机器人课程纲要

热门文章

  1. 单链表按顺序插入节点
  2. jQuery 样式操作||操作 css 方法/设置类样式方法
  3. Backbone集合
  4. 标签页使用及bug解决
  5. 思维导图 - 测试技术扩展:Postman接口测试、Sonar白盒测试、Sonic移动测试、Python操作FTP服务器
  6. Python+selenium 自动化-切换窗口页签、切换iframe框架。确定页面是否包含iframe方法。
  7. PyQt5 图形界面-实现按钮监听事件
  8. VS2013(Visual Studio 2013)官方中文旗舰版安装激活方法
  9. 电磁场与电磁波第四章 时变电磁场
  10. 1.1 基本图像导入、处理和导出