十进制转二进制小示例(含位运算操作及规律)

package org.noneorone.lang.number;

 

/**

* Title: JavaTech<br>

* Description: 进制转换小例<br>

* Copyright: Copyright (c) 2012 <br>

* Create DateTime: Apr 11, 2012 2:51:22 PM <br>

* @author sunnysolong

*/

public class BinaryConversion {

 

/**

* 十进制转二进制处理

* @param decimal

* @return

*/

private static StringBuilder decimalToBinary(int decimal){

StringBuilder sb = new StringBuilder();

decimalToBinary(decimal, sb);

sb = sb.reverse();

if(sb.indexOf("0") == 0){

sb.deleteCharAt(0);

}

return sb;

}

/**

* 十进制转二进制

* @param decimal

* @param sb

* @return

*/

private static StringBuilder decimalToBinary(int decimal, StringBuilder sb){

//商和余数

int quotient = 0, remainder = 0;

remainder = decimal - decimal / 2 * 2;

quotient = (decimal - remainder) / 2;

//System.out.println(decimal + " / 2 = " + quotient + " ... " + remainder);

if(quotient > 1){

sb.append(remainder);

decimalToBinary(quotient, sb);

}else{

sb.append(remainder);

sb.append(quotient);

}

return sb;

}

 

public static void main(String[] args) {

System.out.println(decimalToBinary(23) + "---" + decimalToBinary(61) + "---" + decimalToBinary(42));;

System.out.println( 61|23); // 10111 | 111101 对整型参数逐位执行布尔OR操作,如果其中一个运算数中相应的位数为1或者两者都为1,则结果中的这一位为1

System.out.println( 61&23); // 10111 & 111101 对整型参数逐位执行布尔AND操作,只有两个运算数中相应的位数都为1,结果中的这一位方可为1

System.out.println( 61^23); // 10111 ^ 111101 对整型参数逐位执行布尔异或操作,异或是指第一个运算数是true,或者第二个运算数是true,但是两者不能同时为true.如果两个运算数中只有一个数的相应位为1(但不能同时为1),那么结果中的这一位就为1。

//总结:a | b = a & b + a ^ b;

}

}


你可能感兴趣的:(Java位运算符,Java十进制转二进制)