位运算1 a^b

在这里插入图片描述
快速幂模板

#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll qmi(ll a,ll b,ll p){
    if(p==1)return 0;
    ll res=1;
    while(b){
        if(b&1)res=res*a%p;
        b>>=1;
        a=a*a%p;
    }
    return res;
}
int main(){
    int a,b,p;
    cin>>a>>b>>p;
    cout<<qmi(a,b,p);
    return 0;
}
在编程中,`a = a ^ b` 是一种按位异或(XOR)操作。该操作对两个操作数的每一位执行异或运算,并将结果存储回左操作数 `a` 中。异或运算的规则是:如果两个对应的二进制位相同,则结果为 0;如果不同,则结果为 1。 例如,假设 `a = 5`(二进制表示为 `0101`)和 `b = 3`(二进制表示为 `0011`),执行 `a ^ b` 的过程如下: ``` a: 0101 b: 0011 a ^ b: 0110 ``` 最终,`a ^ b` 的结果为 `6`(二进制表示为 `0110`),并将此值重新赋给变量 `a`。因此,`a` 的值从 `5` 变为 `6` [^1]。 为了更直观地理解,可以通过代码示例展示这一过程: ```java public class BitwiseXORExample { public static void main(String[] args) { int a = 5; // 二进制表示为 0101 int b = 3; // 二进制表示为 0011 a = a ^ b; // 执行按位异或操作 System.out.println("a 的新值为: " + a); // 输出 a 的新值为 6 } } ``` 在上述代码中,`a = a ^ b` 的执行过程与二进制运算规则一致,最终结果为 `6`,因为 `0101 XOR 0011` 的结果是 `0110` [^2]。 ### 异或运算的应用 异或运算在编程中有多种用途,包括但不限于: - **交换两个变量的值**:无需使用额外的临时变量。 ```java int x = 10; int y = 20; x = x ^ y; y = x ^ y; x = x ^ y; System.out.println("x = " + x + ", y = " + y); // 输出 x = 20, y = 10 ``` - **数据加密与解密**:异或运算可以用于简单的加密算法。 - **错误检测与校验**:在数据传输中,异或可用于生成校验码。 ### 异或运算的特性 异或运算具有以下数学特性: 1. **交换律**:`a ^ b = b ^ a` 2. **结合律**:`(a ^ b) ^ c = a ^ (b ^ c)` 3. **恒等律**:`a ^ 0 = a` 4. **自反性**:`a ^ a = 0` 这些特性使得异或运算在算法设计和优化中非常有用。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值