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
随机推荐
- MySql 面试开发技术点汇总
表结构设计 1.为什么一定要设一个主键? 答:因为你不设主键的情况下,innodb也会帮你生成一个隐藏列,作为自增主键.所以啦,反正都要生成一个主键,那你还不如自己指定一个主键,在有些情况下,就能显 ...
- 使用Koa.js离不开这十个中间件
随着ES6的普及,async/await的语法受到更多JS开发者的青睐,Koa.js作为比较早支持使用该语法的Node框架越来越受到大家的喜爱,虽然Koa.js本身支持的功能很有限,但官方和社区提供了 ...
- hdu2444The Accomodation of Students (最大匹配+判断是否为二分图)
题意 首先判断所有的人可不可以分成两部分,每部分内的所有人都相互不认识.如果可以分成 则求两部分最多相互认识的对数. 解题 类似分成两组,同组互不相关,就可能使判断是否为二分图 能否分成两部分 则是判 ...
- NTFS,FAT32和exFAT文件系统的区别
NTFS,FAT32和exFAT文件系统的区别 本文所有资料来源于网络,仅做个人学习使用,如有侵权,请联系删除 1.什么是文件系统 文件系统是系统对文件的存放排列方式,不同格式的文件系统关系到数据是如 ...
- vue引入jquery插件
在vue中使用jquery插件 1.引入jquery 第一种方法:全局引入jquery 在webpack.base.conf.js,新增以下代码 plugins: [ new webpack.opti ...
- 获取url中参数值
function GetRequest() {var url = window.location.href; //获取url中"?"符后的字串var theRequest = ne ...
- 异步分布式队列Celery
异步分布式队列Celery 转载地址 Celery 是什么? 官网 Celery 是一个由 Python 编写的简单.灵活.可靠的用来处理大量信息的分布式系统,它同时提供操作和维护分布式系统所需的工具 ...
- 【vue】iView-admin2.0动态菜单路由【版2】
依照iView-admin2.0动态菜单路由[版1] 归纳几个节点动态路由获取方式2 ——> easymock假数据 ——> 数据转组件处理.addRoutes ——> localS ...
- ARM伪指令和协处理器访问指令
伪指令本身没有对应的机器码 .global声明全局符号,点事GUN汇编的特点 .data定义数据段 .equ DA #0x89 定义宏 .align 4 4字节对齐 mov 指令里的立即数只能是8位的 ...
- samba服务及vsftpd服务
如何配置多个网卡 第一步: 打开设置,选择网络驱动器添加 第二步: ip a 查看网卡是否添加成功 第三步: 打开刚添加的网卡配置文件(注意,你刚添加的网卡是没有配置文件的,需要去复制一份到/etc/ ...