c/c++运算符
1.算术运算符(+ - / * %)
2.移位运算符
移运算符:操作数必须是整形,>>,逻辑左移左边移入的位用0填充,算数左移左边移入的的位用符号位补齐。(无符号数为逻辑左移,对于有符号数取决于编辑器)
<<,值左边的几位被丢弃,右边的多出来的几个空位用0补齐。
例:返回参数中1的个数
int SumOfOne(int num)
{
int count = 0;
for (int i = 0; i < 32; i++)
{
if (num &1)
count++;
num >>= 1; }
return count;
}
3、位操作符(& | ^)
将指定位(bit_number)置1
value=value|1<<bit_number;
将指定位(bit_number)置1
value=value&~(1<<bit_number)
4、赋值,复合赋值运算符(=,+=,-=,*=,%=,......)
5、单目运算符(只接受一个操作数)(!,++,-,&,sizeof,~,--,*,(类型))
6、关系运算符(>,>=,<,<=,!=,==)
7、逻辑运算符(&&,||)
a>5&&a<10 (&&的优先级比>和<的优先级低所以组合方式为(a>5)&&(a<10 )但尽管&&的优先级较低但它还会对两个表达式加以控制只有左操作数为真时才对右操作数进行操作)
操作符的一些应用:
判断一个数是不是2的n次方
bool IsPowOfTwo(int num)
{
if (!(num&num - ))
return ;
return ;
}
定义宏实现将一个int型的数的奇偶位互换
#define M(n) (((n>>1)0x55555555)|(n<<1)&0xaaaaaaaa)
将一个二进制序列逆序
int Reverse(int num)
{
int ret = ;
for (int i = ; i < ; i++)
{
ret <<= ;
ret|= (num >> i) & ;
}
return ret;
}
找出一组数中唯一的出现一次的数
int FindOneCount(int *a, int size)
{
int xor = ;
for (int i = ; i < size; i++)
{
xor = xor^a[i];
}
return xor; }
找出只出现一次的两个数,其他的都是成对出现的
void FindTwoCount(int *a, int size,int *p1,int *p2)
{
int tmp = ;
int xor = ;
int pos = ;
for (int i = ; i < size; i++)
{
xor ^= a[i];
}
tmp = xor;
while (xor)//找出不同的一位
{
if ((xor & ) == )
break;
pos++;
xor >>= ;
}
for (int i = ; i < size; i++)
{
if ((a[i] >> pos) & )
{
(*p1)^= a[i]; }
xor = tmp;
*p2 = xor ^ (*p1); }
printf("%d\t%d\n", *p1, *p2);
}
c/c++运算符的更多相关文章
- shell运算符
原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用. expr 是一款表达式计算工具,使用它能完成表达式的求值操作. #!/bin/bash v ...
- SQL Server-聚焦APPLY运算符(二十七)
前言 其实有些新的特性在SQL Server早就已经出现过,但是若非系统的去学习数据库你会发现在实际项目中别人的SQL其实是比较复杂的,其实利用新的SQL Server语法会更加方便和简洁,从本节开始 ...
- java中的移位运算符:<<,>>,>>>总结
java中有三种移位运算符 << : 左移运算符,num << 1,相当于num乘以2 >> : 右移运算符,num >& ...
- 我的MYSQL学习心得(五) 运算符
我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...
- .NET 基础 一步步 一幕幕[运算符、占位符、转义符]
运算符.占位符.转义符 好吧,在五局全胜之后,终于升到了三个钻,距离一个星星还有一大段距离,忽然想起来今天的博客还没写,果断坑队友,来写博客了....感觉以后还是每天更新一篇比较好.要不晚上就该熬 ...
- ECMASCript2015 提案 stage-3的对象展开运算符
看源码时看到如下的代码 export default { //通过mapActions将actions映射到methods里 methods: { ...mapActions([ 'updateSta ...
- JavaScript权威设计--JavaScript表达式与运算符,语句(简要学习笔记六)
1.delete是一元操作符,用来删除对象属性或者元素. var a={ x:1, y:2 } delete a.x; //删除x属性 “x”in a //false:a对象中已经不存在x属性 ale ...
- JavaScript权威设计--JavaScript表达式与运算符(简要学习笔记五)
1.3种原始表达式 1.直接量: 1.23 //数字直接量 “hello” //字符串直接量 ...
- LINQ to SQL语句(18)之运算符转换
运算符转换 1.AsEnumerable:将类型转换为泛型 IEnumerable 使用 AsEnumerable<TSource> 可返回类型化为泛型 IEnumerable 的参数.在 ...
- El表达式的关系运算符
El表达式的关系运算符: == 对应 eq != 对应 ne > 对应 gt < 对应 It
随机推荐
- 如何将Numpy加速700倍?用 CuPy 呀
如何将Numpy加速700倍?用 CuPy 呀 作为 Python 语言的一个扩展程序库,Numpy 支持大量的维度数组与矩阵运算,为 Python 社区带来了很多帮助.借助于 Numpy,数据科学家 ...
- MySQL on duplicate key update 批量插入并更新已存在数据
业务上经常存在一种现象,需要批量往表中插入多条数据,但在执行过程中,很可能因为唯一键冲突,而导致批量插入失败.因此需要事先判断哪些数据是重复的,哪些是新增的.比较常用的处理方法就是找出已存在的数据,并 ...
- EL作用域对象
EL与jsp的作用域对象对应关系,,,,,及EL具体作用域对象介绍,如下
- AutoLayout and Sizeclasses讲解
iOS8和iPhone6发布已经过去蛮久了,广大的果粉终于迎来了大屏iPhone,再也不用纠结为大屏买三星舍苹果了…但是对于iOS开发人员来说,迎来了和Android开发开发一样的问题—>各种屏 ...
- iOS崩溃分析
崩溃的分析 最近修复了一些iOS项目的崩溃,想分析总结一下这些崩溃的原因,以及预防.崩溃的原因一般有下面几种: 内存访问错误(这个出现的比较多,原因多种多样) 非法指令的执行(超出权限范围内的指令) ...
- 32-第3章 数据链路层--抓包分析数据帧格式-ISO一图了然-小结
OSI理论模型 层级 名称 事物举例 功能 数据单位 别名 数据组成 协议举例 7 应用层 QQ.OA 网络通信 上层数据 上层数据 HTTP/FTP/DNS 6 表示层 web数据压缩.https加 ...
- mydql 设置充许远程链接
1 本机作为服务器时,其他机器连接不上? 1)看一下防火墙是否打开了. 2)在cmd中设置权限. 第一种:(进入数据库的情况下) 1.d:\mysql\bin\>mysql -h localho ...
- ARM汇编 汇编文件后缀.s与.S
有两套汇编的语法: ARM公司的标准ARM汇编语言和GNU对ARM支持的GNU ARM汇编. ARM标准汇编语言即ARM公司的开发工具ADS里用的汇编语言: GNU汇编即在Linux下用GCC编译的汇 ...
- Spring + Mybatis 企业应用实战 第3章 Sping MVC的常用注解
注解(annotation) @Controller @Controller是扩展的@Component的,可以说基本一样,就是作为一种标志. @RequestMapping value: 指 ...
- jmeter之csv文件参数化
1.准备好CSV文件,记下路径 2.点击测试计划或者线程组,添加配置元件 ——CSV Data Set Config 3.填写相关参数 4.使用参数