位运算实现a==b(JAVA)
package com.lius.bit;
import java.util.ArrayList;
import java.util.List;
/**
* 位运算实现a==b
* @author Administrator
*
*/
public class BitCompareEquals {
//程序入口main
public static void main(String[] args) {
int a = -13;
int b = -13;
BitCompareEquals BitCompareEquals = new BitCompareEquals();
boolean finalResult = BitCompareEquals.compareProcess(a,b);
System.out.println(String.format("最终结果:%b", finalResult));
}
//bit位比较过程
public boolean compareProcess(int a,int b) {
List<Integer> ra = getIntBitValue(a);
List<Integer> rb = getIntBitValue(b);
List<Integer> rc = ra.size()>rb.size()?ra:rb;
boolean result = true;
for (int i = rc.size()-1; i >=0 ; i--) {
int t0 = ra.size()-1>=i?ra.get(i):0;
int t1 = rb.size()-1>=i?rb.get(i):0;
//compare
boolean currentResult = ((t0^t1)==0);
//print
System.out.println(String.format("第%d次比较结果:[%d,%d]\t%b", rc.size()-i,t0,t1,currentResult));
result&=currentResult;
}
return result;
}
//数值转换为bit线性列表
public List<Integer> getIntBitValue(int param){
int paramAbs = param<0?~param:param;
int num = (paramAbs>>8)+1;
List<Integer> result = new ArrayList<Integer>();
for(int i = num*7;i>=0;i--) {
result.add((param>>i&1));
}
System.out.println(result.toString());
return result;
}
}