java位运算

对于位运算,是指对二进制数的每一位进行运算,其中有与或非,同或等操作,与位| ,或为&,非为~,异或为^,对于与运算来说,如果两个数都为1,则结果为1,或运算,如果两个数有一个为1,则结果为1,异或,两个数不同的话,结果为1。

对于异或运算来说,可以用于消除重复等等操作

以一个题目为例:存在一个长1001的数组,中间存放着1~1000的数还有一个与其中同样的一个数,现在需要将这个数找到,请设计算法

import java.util.Arrays;
import java.util.Random;

public class test1 {
    public static void main(String[] args) {
        int[] list =new int[1001];
        for( int i=0;i<list.length-1;i++)
        {

            list[i]=i+1;
        }
        list[list.length-1]= new Random().nextInt(list.length-1)+1;
        int index =new Random().nextInt(list.length);
        int temp;
        temp= list[index];
        list[index]=list[list.length-1];
        list[list.length-1]=temp;
        System.out.println(Arrays.toString(list));
        int x=0;
        for (int j = 0; j < list.length-1; j++) {

            x=(x^(j+1));//可以从二进制来看1^2=0010^0001=0011=3
            System.out.println(x);

        }
        System.out.println();
        for(int p =0;p<list.length;p++)
        {
            x=(x^list[p]);
            System.out.println(x);
        }
        System.out.println(x);
        System.out.println("=============");
        int y=0;
        int[] helper =new int[list.length];
        for(int z=0;z<list.length;z++)
        {
            helper[list[z]]++;
        }
        for(int i =0;i<list.length;i++)
        {
            if(helper[i]==2)
            {

                System.out.println(i);
                y=i;
            }
        }

    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值