异或运算(XOR)的3个经典应用场景:加密、校验、交换与LeetCode 268题解
📅 2026/7/12 2:00:12
👁️ 次浏览
异或运算XOR的3个经典应用场景与LeetCode 268题解1. 异或运算的本质与特性异或运算XOR是计算机科学中最基础也最强大的位运算之一。它的运算规则简单却蕴含着深刻的数学原理当两个输入位相同时输出0不同时输出1。这个看似简单的定义背后隐藏着三个关键性质自反性a ^ a 0恒等性a ^ 0 a交换律与结合律a ^ b b ^ a和(a ^ b) ^ c a ^ (b ^ c)这些性质使得异或在许多场景下成为高效解决问题的利器。在实际编程中大多数语言使用^符号表示异或运算。例如在Python中print(5 ^ 3) # 输出6因为101 ^ 011 1102. 经典应用场景一加密与解密基本原理异或加密是最简单的对称加密方法之一。其核心思想是利用密钥对明文进行异或运算得到密文再用相同的密钥对密文异或即可恢复明文密文 明文 ^ 密钥 明文 密文 ^ 密钥实际示例假设我们要加密字符串HELLOdef xor_cipher(text, key): return bytes([b ^ key for b in text.encode()]) original HELLO key 42 encrypted xor_cipher(original, key) # 加密 decrypted xor_cipher(encrypted, key) # 解密 print(f原始: {original}, 加密后: {encrypted}, 解密后: {decrypted.decode()})安全性分析虽然异或加密实现简单但它存在明显弱点对长文本使用单字节密钥容易被频率分析破解相同的密钥重复使用会泄露信息改进方案使用更复杂的密钥生成策略如一次性密码本OTP或与哈希函数结合。3. 经典应用场景二数据校验奇偶校验异或可用于快速计算数据的奇偶校验位。通过对所有数据位进行异或结果为1表示奇数个10表示偶数个1def parity_check(data): parity 0 for byte in data: parity ^ byte return parity 1 data b\x01\x03\x05 print(f校验位: {parity_check(data)}) # 输出1更复杂的校验方案在实际系统中常使用纵向冗余校验LRC或循环冗余校验CRC等更健壮的方案但它们的基础都包含异或运算。4. 经典应用场景三变量交换与算法优化无临时变量交换利用异或性质可以实现不借助临时变量的值交换void swap(int *a, int *b) { *a ^ *b; *b ^ *a; *a ^ *b; }注意事项当a和b指向同一内存时会导致归零现代编译器对传统交换方法有优化实际性能可能不如临时变量法算法优化案例异或常用于优化查找唯一元素的算法。例如找出数组中唯一的非重复元素def find_unique(nums): result 0 for num in nums: result ^ num return result print(find_unique([4, 1, 2, 1, 2])) # 输出45. LeetCode 268缺失数字的异或解法问题描述给定一个包含[0, n]中n个数的数组找出缺失的那个数字。例如[3,0,1]的缺失数字是2。传统解法对比常见解法包括数学求和法计算0到n的和减去数组总和哈希表法空间复杂度较高排序法时间复杂度较高异或解法利用a ^ a 0的性质将数组所有元素与0到n的所有数字异或最终结果就是缺失的数字def missingNumber(nums): missing len(nums) for i, num in enumerate(nums): missing ^ i ^ num return missing复杂度分析时间复杂度O(n)空间复杂度O(1)数学原理假设n3完整序列应为0,1,2,3。如果缺失2计算过程如下missing 3 3 ^ (0^0) ^ (1^1) ^ (2^3) 3 ^ 0 ^ 0 ^ (2^3) 3 ^ 2 ^ 3 26. 深入理解异或在计算机体系中的应用硬件层面CPU的算术逻辑单元(ALU)直接支持异或运算通常只需1个时钟周期。现代处理器甚至能在一个周期内执行多个异或操作。密码学扩展高级加密标准(AES)等现代加密算法中异或是核心操作之一。例如AES的轮密钥加步骤就是简单的异或操作。错误检测与纠正汉明码等纠错码大量使用异或运算来定位和纠正数据错误。一个典型的(7,4)汉明码生成过程p1 d1 ^ d2 ^ d4 p2 d1 ^ d3 ^ d4 p3 d2 ^ d3 ^ d47. 实际工程中的注意事项语言差异不同语言对异或的实现略有差异JavaScript中a ^ b会先将字符转换为ASCII码Python中异或可以用于整数和布尔值但不能直接用于字符串调试技巧当使用异或进行复杂运算时建议打印中间结果的二进制表示对长数据分块验证特别注意边界条件如全0或全1性能考量虽然异或理论复杂度低但在实际应用中对于小型数据差异不明显在数据密集型应用中需要考虑CPU缓存和指令级并行优化8. 扩展应用与练习题进阶问题找出数组中两个唯一的数字其他数字都出现两次不使用比较运算符找出两个数中的较小值实现一个简单的流加密算法推荐练习题题目难度关键技巧LeetCode 136简单基本异或应用LeetCode 260中等异或分组LeetCode 371中等位运算模拟加法在实际面试中理解异或的这些应用可以帮助你快速解决许多位运算相关问题。记住异或的强大之处在于它能够高效地比较和操作数据的二进制表示这种思维方式在解决许多底层系统问题时尤为有用。
1. 项目概述:这不是一个“下载教程”,而是一次零门槛的OpenClaw实战启蒙 “OpenClaw官网下载免费中文教程,最新版零代码3分钟模型实测教学”——这个标题里藏着三个极易被忽略但极其关键的信息点: “官网”意味着权威性与安全性&…
📅 2026/7/12 1:59:12
终极指南:用airplay2-win将Windows电脑变成免费AirPlay接收器 【免费下载链接】airplay2-win Airplay2 for windows 项目地址: https://gitcode.com/gh_mirrors/ai/airplay2-win
还在为iPhone、iPad和Mac找不到合适的Windows投屏方案而烦恼吗?现在…
📅 2026/7/12 1:59:12
【Bug已解决】openclaw: "tool call timeout" / Function execution exceeded limit — OpenClaw 工具调用超时解决方案
1. 问题描述
OpenClaw 在执行工具调用时超时:
# 工具调用超时
$ openclaw --auto-approve "运行 npm install"
Error: Too…
📅 2026/7/12 1:59:12
本文概览:二叉树方面的算法基本都要使用递归,本文系统讲解二叉树的结构和递归的三个核心问题(什么时候用递归、递归的开始与结束、怎么编写递归函数),并配合五道Hot 100入门题(中序遍历、最大深度、翻转二叉…
📅 2026/7/12 3:03:34
最近《怪奇物语》粉丝们有福了!Netflix刚刚发布了衍生作品《怪奇物语:1985故事集》的4K中文预告片,这部备受期待的作品将带我们重回霍金斯小镇最惊心动魄的年代。作为资深剧迷和技术爱好者,我第一时间分析了预告片中的技术细节和叙…
📅 2026/7/12 3:03:34
Fate/Grand Automata完整指南:让FGO刷本自动化,解放你的双手!🚀 【免费下载链接】FGA Auto-battle app for F/GO Android 项目地址: https://gitcode.com/gh_mirrors/fg/FGA
厌倦了在《Fate/Grand Order》中重复刷本收集素…
📅 2026/7/12 3:03:34
一、文章前言大家好,本文结合课堂 PPT 理论 企业实训脚本完整流程,系统讲解OpenStack 底层原理、核心组件协作、双节点(ControllerCompute)一键脚本部署全流程,适合云计算初学者、运维、高校实训学员。 OpenStack 是业…
📅 2026/7/12 3:03:34
QGIS 3.34 实战:1946个水质监测站空间可视化与七大流域制图全流程打开QGIS的第一件事,往往不是急着导入数据,而是先想清楚:这些空间数据要讲什么故事?对于环境监测领域的研究者来说,1946个地表水监测站背后…
📅 2026/7/12 3:03:34
本文关键词:openclaw大虾说真的,每次去海鲜市场看到那些张牙舞爪的大虾,我都忍不住想掏钱。但是!别急着刷卡,你确定你买回去的是好虾,而不是被宰的“冤大头”?我上次在码头边上的摊位,就是没看清,结果买回来的虾肉松散得像棉絮,煮完缩水一半,气得我差点把摊主骂一顿…
📅 2026/7/12 3:02:08
豆包openclaw最近圈子里都在聊豆包openclaw,我也没忍住,掏腰包入手了一套。说实话,刚拿到手的时候,心里是打鼓的。毕竟市面上类似的智能硬件太多了,有的吹得天花乱坠,用起来却是一堆bug。为了不让大家的钱打水漂,我连续用了半个月。从开箱到日常高频使用,甚至故意测试它…
📅 2026/7/12 0:00:04
SQLyog 13.3.1 社区版在Windows 10/11上的完整安装与连接指南 对于刚接触MySQL数据库管理的开发者和学生来说,选择一个直观易用的图形化管理工具至关重要。SQLyog作为一款轻量级但功能强大的MySQL GUI工具,能够显著提升数据库操作的效率和体验。本文将详…
📅 2026/7/12 0:00:28
SPEC CPU 2006 跨平台基准测试深度实战:ARM/X86/MIPS 架构配置优化与结果分析方法论在当今多元化的计算架构时代,如何客观评估不同处理器平台的真实性能成为系统工程师和性能优化专家的核心挑战。SPEC CPU 2006 作为业界公认的计算密集型基准测试套件&am…
📅 2026/7/12 0:00:28
豆包openclaw最近圈子里都在聊豆包openclaw,我也没忍住,掏腰包入手了一套。说实话,刚拿到手的时候,心里是打鼓的。毕竟市面上类似的智能硬件太多了,有的吹得天花乱坠,用起来却是一堆bug。为了不让大家的钱打水漂,我连续用了半个月。从开箱到日常高频使用,甚至故意测试它…
📅 2026/7/12 0:00:04
SQLyog 13.3.1 社区版在Windows 10/11上的完整安装与连接指南 对于刚接触MySQL数据库管理的开发者和学生来说,选择一个直观易用的图形化管理工具至关重要。SQLyog作为一款轻量级但功能强大的MySQL GUI工具,能够显著提升数据库操作的效率和体验。本文将详…
📅 2026/7/12 0:00:28
SPEC CPU 2006 跨平台基准测试深度实战:ARM/X86/MIPS 架构配置优化与结果分析方法论在当今多元化的计算架构时代,如何客观评估不同处理器平台的真实性能成为系统工程师和性能优化专家的核心挑战。SPEC CPU 2006 作为业界公认的计算密集型基准测试套件&am…
📅 2026/7/12 0:00:28
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/12 0:15:59
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/10 22:46:54
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/10 22:46:54