异或运算
异或运算
运算规律
相同为0,不同为1
举例说明:有两个二进制数,分别为a
和b
,他们两个异或计算。
10110^00111=10001
一个值于0异或,都是这个数
a^0=a
任何数跟自己异或,都为0
a^a=0
满足交换律和结合律
(a ^ b) ^ c = a ^ (b ^ c)
两值交换
let a = 5;
let b = 10;
// 值交换
a = a ^ b;
b = a ^ b;
a = a ^ b;
console.log('a=>', a)
console.log('b=>', b)
1. a = a ^ b; 此时: a = a ^ b; b = 10;
2.b = a ^ b; 此时:b = a ^ b ^ b。根据上边的规律,【任何数跟自己异或为0】得到: b = a ^ 0根据规律,进而得到 b = a。
3.a=(a ^ b) ^ (a ^ b ^ b)=a^b^a=b
有一个数组,只有一种数出现了奇数次,其它所有树出现了偶数次,怎么找出出现奇数次的这个数?
const a = [2,3,4,5,6,5,5,6,4,3,2];
// 输出奇数
number = 5;
我们通过异或运算,代码如下
const arr = [2,3,4,5,6,5,5,6,4,3,2];
let number = arr[0];
for (var i = 1; i < arr.length; i ++) {
number = number ^ arr[i]
}
console.log('number=>', number);
我们把数组中的每个数都进行异或运算,就会得出奇数次出现的那个数。
简单加解密
我们有明文text,秘钥key,进行异或运算得到密文cipher
加密
const cipher = text ^ key;
解密
const text = cipher ^ key;
const cipher = text ^ key;
const text = (text ^ key) ^ key;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探