package com.example.demo02; import java.util.ArrayList; import java.util.List; public class ExclusiveOr { //得到二进制最右测的1 public static int getRightOne(int a) { int sum = 0; for (int i : arr) { sum ^= i; } int rightOne = getRightOne(sum); // 0001* Lista = new ArrayList(); for (int i : arr) { //也可以利用&来进行区分 if ((i ^ rightOne) > i) { a.add(i); } } int result = 0; for (int i = 0; i < a.size(); i++) { result ^= a.get(i); } System.out.println(result); System.out.println(sum ^ result); } public static int getBitCount(int N){ int count = 0; while (N != 0) { int rightOne = getRightOne(N); count++; N ^= rightOne; } return count; } public static void main(String[] args) { //10100 00100 //System.out.println(getRightOne(20)); int[] arr = {1, 1, 2, 2, 3, 4}; // 0011 0100 0111 getTwoOddNumber(arr); //System.out.println(Integer.bitCount(7)); int bitCount = getBitCount(7); System.out.println(bitCount); } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)