当前位置: 首页 > news >正文

异或运算^简述

异或运算:^

两个变量之间异或运算时,其二进制位相同取0,不同取1.

示例:a=10  (0b 0000 1010)

           b=3    (0b 0000 0011)

           a^b=9(0b 0000 1001)

据此可以推算异或运算"^"有以下特性:

a^a=0        (0b 0000 0000):相同变量异或运算=0

a^0x00=10(0b 0000 1010):跟0位异或运算即不变

a^0x0f=5   (0b 0000 0101):跟1位异或运算即按位翻转,此为^运算主要功能

进一步延伸,异或运算符可用于数据交换:

a=a^b=10^3=(0b 0000 1010)^(0b 0000 0011)=(0b 0000 1001)

b=b^a=          (0b 0000 0011)^(0b 0000 1001)=(0b 0000 1010)

a=a^b            (0b 0000 1001)^(0b 0000 1010)=(0b 0000 0011)

用这个方式写冒泡排序:

#include <stdio.h>int main(){int arr[]={21,12,11,10,70,21};int len=sizeof(arr)/sizeof(int); for(int i=len-1;i>0;i--){for(int k=0;k<i;k++){if(arr[k]>arr[k+1]){arr[k]=arr[k]^arr[k+1];arr[k+1]=arr[k+1]^arr[k];arr[k]=arr[k]^arr[k+1];}}}for(int j=0;j<len;j++){printf("arr[%d]=%d\n",j,arr[j]);}return 0;
}

http://www.lryc.cn/news/269372.html

相关文章:

  • Google Play上架:2023年度总结报告
  • JAVA进化史: JDK10特性及说明
  • 第二百三十四回
  • {MySQL} 数据库约束 表的关系 新增删除 修改 查询
  • 【JVM】虚拟机的组成+字节码文件组成+类的生命周期
  • pip 下载太慢的解决办法,pip换国内源,pip换源
  • OKCC语音机器人的人机耦合来啦
  • 有序数组的平方
  • Java虚拟机中的垃圾回收
  • Vscode新手安装与使用
  • 以元旦为题的诗词(二)
  • 饥荒Mod 开发(二一):超大便携背包,超大物品栏,永久保鲜
  • js 七种继承方法
  • Unity Shader 实现X光效果
  • Android Camera相关类功能整理
  • 3、Git分支操作与团队协作
  • Linux网卡配置
  • wireshark access/trunk/hybrid报文分析
  • C++ Primer Plus----第十二章--类和动态内存分布
  • 清理 Oracle Arch 目录中的日志文件
  • PicGo+GitHub搭建免费图床
  • 免费在线客服软件推荐:经济实用的客户沟通解决方案
  • leetcode344. 反转字符串
  • 【js自定义鼠标样式】【js自定义鼠标动画】
  • Linux开发工具——gdb篇
  • spring状态机
  • K8S异常处理
  • 【挑战全网最易懂】深度强化学习 --- 零基础指南
  • WPF RelativeSource
  • centos 安装 配置 zsh