栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【漫步刷题路】-位运算-求1到n异或的结果

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【漫步刷题路】-位运算-求1到n异或的结果

目录
      • 要求
      • 异或的特点分析:
      • 找规律
        • 规律总结:
      • 代码

要求

求1^2 …^n的结果


异或的特点分析:

**异或的特点:**对应比特位进行异或,对应比特位相同结果为0,不同为1

  • 异或满足交换律和结合律

  • a^a = 0 -> 任何数和自己异或,结果为0

  • a^0 = a ->和0异或的结果为本身

  • a^b = b^a ->异或满足交换律

  • a ^ b ^ c = a ^(b ^ c) = (a ^ b)^ c ->异或满足结合律

  • d = a ^ b ^ c 可以推出 a = d ^ b ^ c ->->异或满足结合律

  • a ^ b ^ a = b ->异或满足自反行性


找规律

找规律:从1 ^ 2 …^n

0异或任何数等于其本身,所以相当于:0 ^ 1 ^ 2n


0^1 = 1
1^2 = 3
1^2^3 = 0
1^2^3^4 = 4

1^2^3^4^5 = 1
1^2^3^4^5^6 = 7  
1^2^3^4^5^6^7 = 0
1^2^3^4^5^6^7^8 = 8

可以得出

规律总结:

每四个数是一个循环

且循环规律为: 1 ,n+1 ,0, n


用结论秒杀:

所以:问:115 结果为?

n = 15  15%4 = 3   
 根据(1 n+1 0 n)    所以结果为0

问:11002结果为??

1002%4 = 2   
根据(1,n+1,0,n)  所以结果为:n + 1 = 1002 + 1=1003

代码
int main()
{
	//产生1-n的异或值
	int i = 1;
	int n = 0;
	printf("请输入从1-?连续异或?中的值:>");
	scanf("%d", &n);
	int x = 0;//记录1异或n的结果
	for (i = 1; i <= n; i++)
	{
		x ^= i;
	}
	printf("1->%d连续异或的结果为:%dn", n, x);
	return 0;
}
```

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/655643.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号