相同为0 不同为1
证明: 由于异或按位进行操作,将4i、4i+1、4i+2、4i+3二进制右移两位之后,得到4个偶数,其数值都为i,因此,右移之后的异或和为0。 对于右移后的低位,其二进制异或为:
因此,上式成立。
记f(n)为0到n的异或和,即:
证明: 、、、、、、0、1、2、3的异或和为0,因此当n=4k+3,即有4的倍数个数字时其异或和为0。 当n=4k+2,f(n)=(n−2)⊕(n−1)⊕n,将其右移两位之后,得到3个为k的数字,其异或和为k,左移两位为4k。而00⊕01⊕10=11,因此,异或和为f(n)=4k+3=n+1 。 当n=4k+1时,f(n)=(n−1)⊕n,将其右移两位之后,得到2个为k的数字,其异或和为0,因此,异或和为f(n)=0+1=1。 当n=4k时,f(n)=n。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】