位运算实现a==b(JAVA)

it2025-08-08  9

位运算实现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; } }

 

最新回复(0)