- 要求
- 异或的特点分析:
- 找规律
- 规律总结:
- 代码
求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 ^ 2…n
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
用结论秒杀:
所以:问:1…15 结果为?
n = 15 15%4 = 3 根据(1 n+1 0 n) 所以结果为0
问:1…1002结果为??
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; } ```
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)