Java中的异或^简单用法

    Java中的位运算符中有一个叫做异或的运算符,符号为(^),其主要是对两个操作数进行位的异或运算,相同取0,相反取1。即两操作数相同时,互相抵消。

    举个简单例子:

    public class Test

    {

    public static void main(String[] args){

        int a=15;

        int b=2;

        System.out.println("a^b="+(a^b));

    }

    }

    输出结果是:a^b=13

    在上面的程序中,a=15的二进制是1111,b=2的二进制是0010,经过异或运算后,得到的二进制数为1101,转换为十进制就是13。

    第一个简单用法是可以用来交换两个基本数据类型的变量的内容

    以下是例子:

    int f = 50;

    int g = 60;

    f = f^g;

    g = f^g;

    f = f^g;

    System.out.println(f+" "+g);

    输出结果是:60 50

    第二个是可以简单应用到一些算法当中,例如,有偶数个数相同,需要找出不同的那个数时,比如:2,3,4,4,3,5,5,6,6,7,7。下面是例子:

    public class Find

    {

    public static void main(String[] args){

        int array[] = {2,3,4,4,3,5,5,6,6,7,7};

        int a = 0;

        for(int i=0;i<array.length;i++){

            v^=array[i];

        }    

        System.out.println("不相同的那个数是:"+v);

    }

    }

    输出的结果是:不相同的那个数是:2

  • 18
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是Java使用异或方式对文件进行加密解密的示例代码: 加密: ```java import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class XorEncryptor { public static void encrypt(File inputFile, File outputFile, String key) throws IOException { FileInputStream inputStream = new FileInputStream(inputFile); FileOutputStream outputStream = new FileOutputStream(outputFile); byte[] buffer = new byte[1024]; int len; int index = 0; while ((len = inputStream.read(buffer)) != -1) { for (int i = 0; i < len; i++) { buffer[i] ^= key.charAt(index % key.length()); index++; } outputStream.write(buffer, 0, len); } inputStream.close(); outputStream.close(); } } ``` 解密: ```java import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class XorDecryptor { public static void decrypt(File inputFile, File outputFile, String key) throws IOException { FileInputStream inputStream = new FileInputStream(inputFile); FileOutputStream outputStream = new FileOutputStream(outputFile); byte[] buffer = new byte[1024]; int len; int index = 0; while ((len = inputStream.read(buffer)) != -1) { for (int i = 0; i < len; i++) { buffer[i] ^= key.charAt(index % key.length()); index++; } outputStream.write(buffer, 0, len); } inputStream.close(); outputStream.close(); } } ``` 其,encrypt方法用于加密文件,decrypt方法用于解密文件。key为加密解密的密钥。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值