博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
异或算法
阅读量:3957 次
发布时间:2019-05-24

本文共 685 字,大约阅读时间需要 2 分钟。

异或:

1表达:a^b=a⊕b=aXORb; 既相同为0,不同为1;
1^1=0; 1^0=1;
用途:
1、交互两个数:a=5,b=10,用异或实现交换

程序代码:

#include
int main(){
int a=5; int b=10; a=a^b; b=a^b;// a=a^b; printf("%d %d\n",a,b); return 0;}

2、因为电脑的数都是二进制的,所以可以转化二进制的位数和统计二进制中1或者0是奇数还是偶数。

(1):位反转

举例:10001000 在一些情况下,第四位和第五位需要反转,可以用10001000与00011000进行异或运算。
10001000 ^ 00011000 = 10010000
(2):统计某一位的奇偶数
将某个元素中的每一位逐步异或.
例如a1=1010,则b1=1 ^ 0 ^ 1 ^ 0 = 0,由此可以判断a中为1的位数是奇数还是偶数。
例如a2=10110,则b2=1 ^ 0 ^ 1 ^ 1 ^ 0 =1,由此可以判断a中为1的位数是奇数还是偶数。

3、找出序列中单个最小的数字:

程序代码:

#include
int main(){
int a,b,c,d,e,f,n,m; scanf("%d%d%d%d%d",&a,&b,&c,&d,&e); n=a^b^c^d^e; printf("%d\n",n); return 0;}

扩展:&(与)运算

都是1时结果才为1;
二进制与运算规则:1&1=1 1&0=0 0&0=0

转载地址:http://yexzi.baihongyu.com/

你可能感兴趣的文章
[杂记] 新年物语&关于Mysql引擎性能测试
查看>>
[心得] 近期更新&关于Infobright
查看>>
[杂记] 流量统计 & 短信接口
查看>>
[Java] JRebel + Maven + Jetty 热部署
查看>>
[算法] 从 Memcached 分布式应用看一致性哈希散列函数的选择
查看>>
[中间件] 消息处理利器 ActiveMQ 的介绍 & Stomp 协议的使用
查看>>
[设计] 原型界面设计利器 Balsamiq Mockups 推荐
查看>>
[闲话] 在西方的程序员眼里,东方的程序员是什么样的
查看>>
[管理] 成功之路的探寻 —— “三力” 理论
查看>>
[连载] Socket 深度探索 4 PHP (一)
查看>>
[连载] Socket 深度探究 4 PHP (二)
查看>>
[连载] Socket 深度探究 4 PHP (三)
查看>>
[无线] Android 系统开发学习杂记
查看>>
[无线] 浅析当代 LBS 技术
查看>>
[杂感] 缅怀乔布斯
查看>>
[无线] 让Android支持cmwap上网
查看>>
[教程] Android PHP 最佳实践视频教程
查看>>
[无线] AndroidManifest.xml配置文件详解
查看>>
[无线] 2012 智能手机市场分析
查看>>
[移动] Android推送方案分析(MQTT/XMPP/GCM)
查看>>