• C语言中位运算符异或“∧”的作用


    异或运算符∧也称XOR运算符。它的规则是若参加运算的两个二进位同号,则结果为0(假);异号则为1(真)。即0∧00011110。如: 即071∧052,结果为023(八进制数)。
    “异或”的意思是判断两个相应的位值是否为“异”,为“异”(值不同)就取真(1),否则为(0)。
     
      下面举例说明∧运算符的应用:
      (1)使特定位翻转
      假设有01111010,想使其低4位翻转,即1变为0,0变为1。可以将它与00001111进行∧运算,即
      
    结果值的低4位正好是原数低4位的翻转。要使哪几位翻转就将与其∧运算的该几位置为1即可。这是因为原数中值为1的位与1进行∧运算得0,原数中的位值0与1进行∧运算的结果得1。
      (2)与0相∧,保留原值
      如012∧00012
      
    因为原数中的1与0进行∧运算得1,0∧0得0,故保留原数。
      (3)交换两个值,不用临时变量
      假如a=3,b=4。想将a和b的值互换,可以用以下赋值语句实现:
      a=a∧b;
      b=b∧a;
      a=a∧b;
      可以用下面的竖式来说明:
    即等效于以下两步:
      ① 执行前两个赋值语句:“a=a∧b;”和“b=b∧a;”相当于b=b∧(a∧b)。而b∧a∧b等于a∧b∧b。b∧b的结果为0,因为同一个数与本身相∧,结果必为0。因此b的值等于a∧0,即a,其值为3。
      ② 再执行第三个赋值语句:a=a∧b。由于a的值等于(a∧b),b的值等于(b∧a∧b),因此,相当于a=a∧b∧b∧a∧b,即a的值等于a∧a∧b∧b∧b,等于b。
      a得到b原来的值。
     
    ////////////////////////////////////////////////////////////////////////
    在【二进制值运算】中:不同为1,相同为0,如1001异或1010等于0011。
    异或也叫半加运算,其运算法则相当于不带进位的二进制加法:二进制下用1表示真,0表示假,则异或的运算法则为:0异或0=0,1异或0=1,0异或1=1,1异或1=0(同为0,异为1),这些法则与加法是相同的,只是不带进位。
    例如:1.不允许创建临时变量,交换两个数的内容。
    代码:
    #include<stdio.h>
    int main()
    {
    int a=5,b=1;
    a=a^b;
    b=a^b;
    a=a^b;
    printf("a=%d
    b=%d
    ",a,b);
    return 0;
    }
    运行结果:
    a=1
    b=5
  • 相关阅读:
    [书目20130415]改变:28天让自己内心强大
    [引]软件著作权登记申请所需文件
    [转]动软代码生成器之模板功能介绍
    [转]C# 冒泡排序你还会吗?
    [转]细说ASP.NET Forms身份认证
    [转]listview加载性能优化ViewHolder
    [转]App for Android (2) —— Python篇
    [转]sqlserver 创建分区表
    [转]c# 四舍五入、上取整、下取整
    常用 Java 静态代码分析工具的分析与比较
  • 原文地址:https://www.cnblogs.com/bytebee/p/8194761.html
Copyright © 2020-2023  润新知