一、位运算符

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语言--位运算符的更多相关文章

  1. C语言位运算符:与、或、异或、取反,左移和右移

    C语言位运算符:与.或.异或.取反.左移和右移 个位操作运算符.这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型. ,则该位的结果值为1,否则为0 | ...

  2. C语言位运算符:与、或、异或、取反、左移和右移

    语言位运算符:与.或.异或.取反.左移和右移 位运算是指按二进制进行的运算.在系统软件中,常常需要处理二进制位的问题.C语言提供了6个位操作运算符.这些运算符只能用于整型操作数,即只能用于带符号或无符 ...

  3. 【转】C语言位运算符:与、或、异或、取反、左移与右移详细介绍

    转载自:http://www.jb51.net/article/40559.htm,感谢原作者. 以下是对C语言中的位运算符:与.或.异或.取反.左移与右移进行了详细的分析介绍,需要的朋友可以过来参考 ...

  4. c语言位运算符

    C语言既具有高级语言的特点,又具有低级语言的功能. 所谓位运算是指进行二进制位的运算. C语言提供的位运算: 运算符   含义  &   按位与  |   按位或  ∧   按位异或  ∽   ...

  5. C语言位运算符:与、或、异或、取反、左移与右移详细介绍

    位运算是指按二进制进行的运算.在系统软件中,常常需要处理二进制位的问题.C语言提供了6个位操作运算符.这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型 ...

  6. C语言位运算符详解

    原文链接:https://www.cnblogs.com/911/archive/2008/05/20/1203477.html 位运算是指按二进制进行的运算.在系统软件中,常常需要处理二进制位的问题 ...

  7. 基础知识复习(一)——C语言位运算符详解

    常用的位运算符:与(&),取反(~),或(|),异或(^),左移(«),右移(») 1. 与(&)操作符,按位与,全为1 时,结果取1 11001 &10011 结果:1000 ...

  8. C语言位运算符及作用:与、或、异或、取反、左移和右移

    一.& 按位与 如果两个相应的二进制位都为1,则该位的结果值为1,否则为0应用:(1)清零 若想对一个存储单元清零,即使其全部二进制位为0,只要找一个二进制数,其中各个位符合一下条件:原来的数 ...

  9. c 语言的位运算符复习

    转载和修正,原文连接:http://www.cnblogs.com/911/archive/2008/05/20/1203477.html 位运算是指按二进制进行的运算.在系统软件中,常常需要处理二进 ...

随机推荐

  1. 从事web前端的这些日子

    不知不觉从事web前端快要一年了,在这一年的时间,自己的技术也得到了不小的进步,但毕竟还是停留在摸索的阶段,前端的这条路还有很长的路要走,前端要掌握的东西太多,知识也在频繁的更新.每天在群里和别人的交 ...

  2. android:layout_weight属性的简单使用

    效果: style.xml <style name="etStyle2"> <item name="android:layout_width" ...

  3. PYTHON线程知识再研习F---队列同步Queue

    让我们考虑更复杂的一种场景:产品是各不相同的.这时只记录一个数量就不够了,还需要记录每个产品的细节.很容易想到需要用一个容器将这些产品记录下来. Python的Queue模块中提供了同步的.线程安全的 ...

  4. 转:shell 经典, shell 十三问

      原文链接:http://blog.csdn.net/freexploit/article/details/626660 我在 CU 的日子并不长,有幸在 shell 版上与大家结缘.除了跟众前辈学 ...

  5. leetcode_question_112 Path Sum

    Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all ...

  6. Linux环境下使用JFS文件系统

    Linux环境下使用JFS文件系统 JFS是IBM公司为linux系统开发的一个日志文件系统.从IBM的实力及它对Linux的态度来看,JFS应该是未来日志文件系统中最具实力的一个文件系统. JFS提 ...

  7. linux下串口的阻塞和非阻塞操作

    有两个可以进行控制串口阻塞性(同时控制read和write):一个是在打开串口的时候,open函数是否带O_NDELAY:第二个是可以在打开串口之后通过fcntl()函数进行控制. 阻塞的定义: 对于 ...

  8. 第29讲 UI组件之 ListView与 BaseAdapter,SimpleAdapter

    第29讲 UI组件之 ListView与 BaseAdapter,SimpleAdapter 1.BaseAdapter BaseAdapter是Android应用程序中经常用到的基础数据适配器,它的 ...

  9. 安装sql server提示挂起报错

    在安装sql server时出现“以前的某个程序安装已在安装计算机上创建挂起的文件操作.运行安装程序之前必须重新启动计算机”错误.无法进行下去. 参考有关资料后,以下步骤基本可以解决: 1)添加/删除 ...

  10. UVA11388 GCD LCM1 2 -1

    题目: 给你两个数G和L,求a和b,他们的最大公约数为G和最小公倍数为L,输出a最小时的a和b.如果不存在在输出-1. Sample Input   2 1 2 3 4 Output for Samp ...