• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >编程问答 > 异或交换算法

异或交换算法

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-07

佚名通过本文主要向大家介绍了dh密钥交换算法,交换算法,密钥交换算法,交换排序算法,交换机算法等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:异或交换算法
描述:

有两个数A和B,现在不通过第三空间交换A和B。


解决方案1:

list($b,$a)=array($a,$b); php版...

解决方案2:

if((&a) != (&b)){
   a^=b^=a^=b;
}//必须判断地址不同!

解决方案3:

在位运算的代数系统中,^运算中 a的逆元仍是a,类比加法 a+(-a)=0 有 a^a=0。 这样想的话,位运算只是在模仿加法运算。

a=a^b  等价  a=a+b
b=a^b  等价  b=a+(-b)
a=a^b  等价  a=a+(-b)

解决方案4:

这个题目好像很老了哦,貌似很多地方都有答案

A=A+B    A:A+B  B:B
B=A-B    A:A+B  B:A
A=A-B    A:B    B:A

这个是加法版的

a = a ^ b
b = b ^ a
a = a ^ b  

这个是异或版的

解决方案5:

首先,感谢@brayden和@kamushin的指导,之前我的理解是错误的,哈哈,留着被踩警示自己。重新补充一下自己的答案
为什么用异或前需要增加判断,是为了防止异或了同一变量,示例代码如下:

void swap(int *arr, int i, int j) {
    if (i != j) {
        arr[i] = arr[i] ^ arr[j];
        arr[j] = arr[i] ^ arr[j];
        arr[i] = arr[i] ^ arr[j];
    }
}

当i==j时,如果不加判断会出现问题,原因是arr[i]和arr[j]都是指向同一变量,直接异或会将这个变量变为0


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 异或交换算法

相关文章

  • 2017-06-07 permissiondenied:laravel
  • 2017-06-07 请研发MACOS系统上传工具
  • 2017-06-07 在线等待:jbpm并发子流程问题
  • 2017-06-07 python的web开发上,有无类似ckfinder的插件?
  • 2017-06-07 七牛:iOS浏览器上传失败614
  • 2017-06-07 Python的多线程是伪命题吗?
  • 2017-06-07 python-ldap连接dn时报错
  • 2017-06-07 python爬虫关于python模拟登陆抓取网站信息
  • 2017-06-07 python怎样批量生成函数?
  • 2017-06-07 python模拟登陆微博Elementisnotcurrentlyinteractable

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • python使用哪个模块能够解析网页获得DOM树结构
    • 上传图片报错Code:-1
    • 新手不知道怎么入门,请高手帮忙
    • 关于逻辑和界面分离
    • 求解答关于Redis多个连接、何时关闭的问题
    • flask-restful浏览器访问api提示下载json文件
    • 提取所有匹配的字符串,包括已经匹配的
    • flask进程间通信
    • 七牛对移动的支持不太好
    • 使用了jieba分词提取权重最大的关键词的示例代码,却始终不出效果。

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有