求下面函数的返回值(微软) -- 统计1的个数
-------------------------------------
int func(int x)
{
int countx = 0;
while(x)
{
countx++;
x = x&(x-1);
}
return countx;
}

假定x = 9999
10011100001111
答案: 8

思路: 将x转化为2进制,看含有的1的个数。
注: 每执行一次x = x&(x-1),会将x用二进制表示时最右边的一个1变为0,因为x-1将会将该位(x用二进制表示时最右边的一个1)变为0。

判断一个数(x)是否是2的n次方
-------------------------------------
#include <stdio.h>

int func(int x)
{
if( (x&(x-1)) == 0 )
return 1;
else
return 0;
}

int main()
{
int x = 8;
printf("%d\n", func(x));
}

注:
(1) 如果一个数是 2的n次方,那么这个数用二进制表示时其最高位为1,其余位为0。

(2) == 优先级高于&

x(x-1)表达式的意义相关推荐

  1. 有关C/C++中,表达式计算顺序的问题,以及表达式内部变量“副作用”问题(转)...

    经常可以在一些讨论组里看到下面的提问:"谁知道下面C语句给n赋什么值?" m = 1; n = m+++m++; 最近有位不相识的朋友发email给我,问为什么在某个C++系统里, ...

  2. 充分理解表达式——《狂人C》习题解答2(第二章习题5)

    /* 编程求1+3+5+7+9+11. */ #include <stdio.h> #include <stdlib.h>int main( void ) {printf (& ...

  3. C/C++ 语言中表达式的求值

    作者:裘宗燕    北京大学数学学院信息科学系    本文基本内容发表于<编程高手>杂志 2004 年第 12 期 经常可以在一些讨论组里看到下面的提问:"谁知道下面 C 语句给 ...

  4. WINCE config.bib文件中的FSRAMPERCENT的意义

    在BSP/files文件夹下面关于FSRAMPERCENT的内容如下: CONFIG ------- FSRAMPERCENT=0x80808080 下面我们来看看上面表达式的意义 FSRAMPERC ...

  5. C/C++ 语言中的表达式求值

    转载地址:http://www.cnblogs.com/heyonggang/p/3340301.html 在此,首先向裘老师致敬! 裘宗燕:C/C++ 语言中的表达式求值 经常可以在一些讨论组里看到 ...

  6. 前、中、后缀表达式概述及转换+栈的计算器原理及代码分析(含完整源码)

    目录: 1.前中后缀表达式的概述 2.中序表达式转前后缀表达式 3.运用栈的后缀表达式实现计算器原理步骤 4.代码实现和分析 1.前中后缀表达式的概述及相互转换 前缀表达式:运算符位于操作数之前. 中 ...

  7. 一起谈.NET技术,从.NET中委托写法的演变谈开去(中):Lambda表达式及其优势...

    在上一篇文章中我们简单探讨了.NET 1.x和.NET 2.0中委托表现形式的变化,以及.NET 2.0中匿名方法的优势.目的及注意事项.那么现在我们来谈一下.NET 3.5(C# 3.0)中,委托的 ...

  8. 列表,字典表达式以及三元表达式

    1.三元表达式条件成立时的返回值 if 条件 else 条件不成立时的返回值三元表达式的意义就是让一些简单的if判断写成一行,减少代码量 def max2(x,y): if x > y: ret ...

  9. LINQ中的Lambda表达式

    Lambda Expressions in LINQ 在第12章,我提到可以用lambda表达式定义内联的委托定义.在如下表达式中: customer => customer.FirstName ...

最新文章

  1. ajax dojo deferred,dojo(四):ajax请求
  2. 掀起网络狂欢效应的六条金科玉律
  3. PHP MemCached win安装
  4. java8安装_JMeter必知必会系列(2) JMeter安装部署
  5. R语言版本查询以及line 1 of `undefined.cases': bad value of `47.25' for attribute `A2'的解决
  6. Windows 10下安装Docker Desktop
  7. 三面美团Java岗,面试竟然被这31道Java基础题难倒了
  8. 多帧点云数据拼接合并_自动驾驶:Lidar 3D传感器点云数据和2D图像数据的融合标注...
  9. OSGI概念理解和入门
  10. myeclipse 6.5 代码提示(alt+/)不提示的修正解决办法
  11. oracle within的用法,Oracle的 listagg() WITHIN GROUP ()函数使用
  12. 离开页面前onbeforeunload事件在火狐的兼容并且提交不触发
  13. Matlab期货量化交易特征选取,【策略分享】Matlab量化交易策略源码分享
  14. VueRouter进阶(1)-导航守卫
  15. 大数据要学javaweb吗_学习大数据需要学习javaee的内容吗?
  16. Subsonic简单的语法整理
  17. python操作模拟器多开操作_appium+python自动化60-windows上同时启动多个appium服务,让多个android机器并行运行...
  18. 10以太坊Token详解
  19. 实用电脑软件安利,朋友们快来挖宝
  20. bootstrap4和bootstrap3的区别

热门文章

  1. 吴恩达深度学习5.1笔记_Sequence Models_循环序列模型
  2. SSH抛出org.apache.ibatis.exceptions.PersistenceException: 异常
  3. sC#进阶系列——WebApi 接口参数不再困惑:传参详解
  4. D3.js 力导向图来处理拓扑图
  5. java8 lamada表达式
  6. linux下ppp拨号无线上网
  7. AndroidAnnotations说明—AndroidAnnotations它是如何工作的?
  8. 烂大街的常用Linux命令、工具
  9. 0626 Django模型(ORM)
  10. MYSQL第一章 创建表 修改表名 删除字段 添加字段 修改地段名