首页 > 编程语言 > 详细

1.2题解:如何找数组中唯一成对的那个数(位运算)

时间:2019-11-30 22:22:02      阅读:84      评论:0      收藏:0      [点我收藏+]

&(与)两边都为1则结果为1,否则为0
0&0 = 0,0&1 = 0,1&0 = 0, 1&1 = 1

|(或)两边都为0则结果为0,否则为1
0|0 = 0,0|1 = 1,1|0 = 1,1|1 = 1

~(非/取反)
取反加1

^(异或)只有一边为1结果才为1,否则为0
0^0 = 0,0^1 = 1,1^0 = 1,1^1 = 0

<<(左移乘2n)
11<<n  结果为11*(n*2)

>>(右移除2n)

44>>n  结果为44/(n*2)

%(取余)
3%2 余 1,2%3 余 2

/(取整)
3/2 商 1,2/3 商 0

 1 public class One_2如何找数组中唯一成对的那个数 {
 2     public static void main(String[] args) {
 3         int N = 11;
 4         int[] arr = new int[N];
 5         for (int i = 0; i < N-1; i++){
 6             arr[i] = i+1;
 7         }
 8         
 9         //最后一个数,是随机数(长度为11的数组,最后一个元素下标应该为10)
10         arr[arr.length-1] = new Random().nextInt(N)+1;//Random().nextInt()会产生一个0到指定数N的随机数不包含N,+1代表从1到指定数字
11         //随即下标0~10之间
12         int index = new Random().nextInt(N);
13         swap(arr, index, arr.length-1);
14         for (int i = 0; i < N; i++){
15             System.out.print(arr[i] + " ");
16         }
17         int x1 = 0;
18         for (int i = 1; i < N; i++){
19             x1 = (x1^i);
20         }
21         System.out.println(x1);
22         for (int i = 0; i < N; i++){
23             x1 = x1^arr[i];
24         }
25         System.out.println(x1);
26     }
27     public static void swap(int[] arr,int x,int y){
28         int temp;
29         temp = arr[x];
30         arr[x] = arr[y];
31         arr[y] = temp;
32     }
33 }

 

1.2题解:如何找数组中唯一成对的那个数(位运算)

原文:https://www.cnblogs.com/z1110/p/11960448.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!