C语言--位运算符
一、位运算符
1.按位与:&
1> 功能
* 只有对应的两个二进制位为1时,结果位才为1,否则为0
* 举例:10用二进制表示为1010, 7用二进制表示为0111。对两个数值进行&运算
* 1010
0111
--------------------
0010
* 规律:二进制中,与1相&保持原位,与0相&就为0
2> 应用:使用&运算符,判断一个整数变量的奇偶性
int main()
{
int a = ;
a& ? printf("%d为奇数", a) : printf("%d为偶数", a);
return ;
}
利用&判断变量奇偶性
2.按位或:|
1> 功能
* 只要对应的两个二进制位中有一个为1,结果就为1,否则为0
2> 应用
* 10用二进制表示为1010, 7用二进制表示为0111。对两个数值进行|运算
* 1010
0111
--------------------
1111
3.按位异或:^
1> 功能
* 当对应的二进制位相异时,结果为1,否则为0
* 举例:10用二进制表示为1010, 7用二进制表示为111。对两个数值进行^运算
* 1010
0111
--------------------
1101
2> 应用: 使用位异或运算符,实现两个变量值的互换
int main()
{
/*该种用法基于三个规律。
1.相同数值进行异或运算,结果为0。
2.任何数值与0异或运算,结果还是原来数值。
3.交换规律:a^b^c=a^c^b */
int a = ;
int b = ;
a = a ^ b;//a = 10^11
b = a ^ b;//b=10^11^11=10
a = a ^ b;//a=10^11^10=11
printf("a=%d,b=%d", a, b);
}
交换数值
4.按位取反:~
1> 功能
* 按位取反,就是对数值的每个二进制位进行取反操作,0取反变1,1取反变0
2> 应用
* 举例:10用二进制表示为1010,对1010进行~操作
* 1010
--------------------
0101
5.左移<< 、右移>>
1> 功能
* a<<n就是将a的各个二进制位向左移动n位,高位丢弃,地位用0补充,左移n位,其实就是乘以2的n次方;a>>n就是将a的各个二进制位向右移动n位,保持符号位不变,右移n位,其实就是除以2的n次方
2> 应用
*举例:10用二进制表示为1010,对1010进行左移1位操作,结果是10100也就是20;对1010进行右移1位操作,结果是101也就是5.
*注意:以后对变量进行乘法或除法时,运用左移或右移可以提高性能
二、自我总结
按位运算符是直接对二进制位进行操作,通过按位运算符我们可以很容易的做到很多事情,如判断变量数值的性,不引入第三变量的前提下交换两个变量的值,以及对变量进行乘除操作等,并且可以提高性能,方便易用。
C语言--位运算符的更多相关文章
- C语言位运算符:与、或、异或、取反,左移和右移
C语言位运算符:与.或.异或.取反.左移和右移 个位操作运算符.这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型. ,则该位的结果值为1,否则为0 | ...
- C语言位运算符:与、或、异或、取反、左移和右移
语言位运算符:与.或.异或.取反.左移和右移 位运算是指按二进制进行的运算.在系统软件中,常常需要处理二进制位的问题.C语言提供了6个位操作运算符.这些运算符只能用于整型操作数,即只能用于带符号或无符 ...
- 【转】C语言位运算符:与、或、异或、取反、左移与右移详细介绍
转载自:http://www.jb51.net/article/40559.htm,感谢原作者. 以下是对C语言中的位运算符:与.或.异或.取反.左移与右移进行了详细的分析介绍,需要的朋友可以过来参考 ...
- c语言位运算符
C语言既具有高级语言的特点,又具有低级语言的功能. 所谓位运算是指进行二进制位的运算. C语言提供的位运算: 运算符 含义 & 按位与 | 按位或 ∧ 按位异或 ∽ ...
- C语言位运算符:与、或、异或、取反、左移与右移详细介绍
位运算是指按二进制进行的运算.在系统软件中,常常需要处理二进制位的问题.C语言提供了6个位操作运算符.这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型 ...
- C语言位运算符详解
原文链接:https://www.cnblogs.com/911/archive/2008/05/20/1203477.html 位运算是指按二进制进行的运算.在系统软件中,常常需要处理二进制位的问题 ...
- 基础知识复习(一)——C语言位运算符详解
常用的位运算符:与(&),取反(~),或(|),异或(^),左移(«),右移(») 1. 与(&)操作符,按位与,全为1 时,结果取1 11001 &10011 结果:1000 ...
- C语言位运算符及作用:与、或、异或、取反、左移和右移
一.& 按位与 如果两个相应的二进制位都为1,则该位的结果值为1,否则为0应用:(1)清零 若想对一个存储单元清零,即使其全部二进制位为0,只要找一个二进制数,其中各个位符合一下条件:原来的数 ...
- c 语言的位运算符复习
转载和修正,原文连接:http://www.cnblogs.com/911/archive/2008/05/20/1203477.html 位运算是指按二进制进行的运算.在系统软件中,常常需要处理二进 ...
随机推荐
- C语言 之 printf () 函数你真的会用吗?
main(){ int i=8; printf("%d %d %d %d %d %d ",++i,--i,i++,i--,-i++,-i--); } 运行结果 8 7 7 8 -7 ...
- angularjs学习笔记—事件指令
ngClick 适用标签:所有触发条件:单击 #html <div ng-controller="LearnCtrl"> <div ng-click=" ...
- QT打开网页 QURL
用QT打开一个网页就是先定义一个QUrl对象url,然后利用QDesktopServices::open(url)即可. 例如: const QUrl url(http://www.baidu.com ...
- Android调用系统的Activity、ContentProvider、Service、Broadcast Receiver
Intent-------->Action |_____________Activity------------------------------->Intent Action |___ ...
- Qt中用QSS切分图片
Qt设计时有时需要实现动态按钮,按钮点击时一个状态,鼠标悬浮时一个状态,离开时一个状态,静止时一个状态.可以用一张png长图,使用QSS分段截取,分配给每一个状态. 1.调用函数 SetButt ...
- 在docker以FPM-PHP运行php,慢日志导致的BUG分析
问题描述: 最近将IOS书城容器化,切换流量后.正常的业务测试了一般,都没发现问题.线上的错误监控系统也没有报警,以为迁移工作又告一段落了,暗暗的松了一口气.紧接着,报警邮件来了,查看发现是一个苹果支 ...
- jQuery的animate方法在IE7下出现小问题
接上,今天接着修改网站的bug,还是网页的这几张图片,还是滑动效果,但在IE7下不但几张图片只显示一张,更别提滑动效果了,根本滑不了啊: 然后打开IE的F12工具,先看样式,再看滑动效果:本来应该显示 ...
- android 通过TimePickerDialog修改时间
初学android,写了个修改时间的小程序,实现如下: 点击change按钮,弹出时间对话框: 然后点击Done,设置显示时间: 实现方式有两种, 一种是使用showDialog方法,不过此种方法已过 ...
- hdu5072(鞍山regional problem C):容斥,同色三角形模型
现场过的第四多的题..当时没什么想法,回来学了下容斥,又听学长讲了一讲,终于把它过了 题目大意:给定n个数,求全部互质或者全部不互质的三元组的个数 先说一下同色三角形模型 n个点 每两个点连一条边(可 ...
- Android apk获取系统权限
Android在apk内部,即通过java代码来进行修改系统文件或者修改系统设置等等,这样需要获取系统权限. 通过直接配置apk运行在System进程内 1. 在应用程序的AndroidManifes ...