Java位运算
最近看Lucene源代码,发现都是用二进制写文件的,涉及到很多位运算的基础知识,于是恶补一下。
private Log log = LogFactory.getLog(TestBitCalculate.class);
DecimalFormat df = new DecimalFormat("00000000,00000000");
public void testBitCalculate(){
Integer i = 5;
Integer j = 3;
operate("&", i, j);
operate("|",i,j);
operate("^",i,j);
}
@SuppressWarnings("unused")
private void operate(String operate,Integer i,Integer j){
Integer result = 0;
log.info("-------------------------------");
log.info(operate + "运算 " + "两个数分别是:" + i + "," + j);
outPutByBinary(i);
outPutByBinary(j);
if(operate.equals("&")){
result = i & j;
}else if(operate.equals("|")){
result = i | j;
}else if(operate.equals("^")){
result = i ^ j;
}
log.info(result);
outPutByBinary(result);
log.info("-------------------------------");
}
private void outPutByBinary(Integer i){
log.info(i + "的二进制为:" + df.format(Integer.valueOf(Integer.toBinaryString(i))));
}
程序运行后控制台输出为:
0 [main] INFO com.develop.bit.TestBitCalculate - -------------------------------
0 [main] INFO com.develop.bit.TestBitCalculate - &运算 两个数分别是:5,3
0 [main] INFO com.develop.bit.TestBitCalculate - 5的二进制为:00000000,00000101
0 [main] INFO com.develop.bit.TestBitCalculate - 3的二进制为:00000000,00000011
0 [main] INFO com.develop.bit.TestBitCalculate - 1
0 [main] INFO com.develop.bit.TestBitCalculate - 1的二进制为:00000000,00000001
15 [main] INFO com.develop.bit.TestBitCalculate - -------------------------------
15 [main] INFO com.develop.bit.TestBitCalculate - -------------------------------
15 [main] INFO com.develop.bit.TestBitCalculate - |运算 两个数分别是:5,3
15 [main] INFO com.develop.bit.TestBitCalculate - 5的二进制为:00000000,00000101
15 [main] INFO com.develop.bit.TestBitCalculate - 3的二进制为:00000000,00000011
15 [main] INFO com.develop.bit.TestBitCalculate - 7
15 [main] INFO com.develop.bit.TestBitCalculate - 7的二进制为:00000000,00000111
15 [main] INFO com.develop.bit.TestBitCalculate - -------------------------------
15 [main] INFO com.develop.bit.TestBitCalculate - -------------------------------
15 [main] INFO com.develop.bit.TestBitCalculate - ^运算 两个数分别是:5,3
15 [main] INFO com.develop.bit.TestBitCalculate - 5的二进制为:00000000,00000101
15 [main] INFO com.develop.bit.TestBitCalculate - 3的二进制为:00000000,00000011
15 [main] INFO com.develop.bit.TestBitCalculate - 6
15 [main] INFO com.develop.bit.TestBitCalculate - 6的二进制为:00000000,00000110
15 [main] INFO com.develop.bit.TestBitCalculate - -------------------------------