在网上搜索了十进制转为二进制的JAVA代码,没有满意的,自己写了一个,与大家一起分享。
/**
* 十进制转化为二进制的内容堆栈,堆栈进入的顺序是由低到高的
* @param dec dec为十进制
* @author jerryLiu
* @return
*/
public static Stack tranDecimalToBinaryStack(int dec){
int tmpDec = dec;
if (dec < 0) tmpDec = -dec;
Stack s = new Stack();
while(tmpDec>2)
{
s.push(tmpDec&1); //输出最后一位
tmpDec=tmpDec>>1; //向右移一位
}
s.push(tmpDec&1);
int first = tmpDec>>1;
if(first > 0)s.push(first);
return s;
}
/**
* 将装满二进制的堆栈转为可以输出的{@link StringBuilder}
* @param binaryStack
* @author jerryLiu
* @return
*/
public static StringBuilder tranBinaryStackToStrBuilder(Stack binaryStack){
StringBuilder sb = new StringBuilder("");
if (null == binaryStack) return sb;
while(!binaryStack.isEmpty()){
sb.append(binaryStack.pop());
}
return sb;
}
/**
* 十进制转化为二进制的字符串
* @param dec
* @author jerryLiu
* @return
*/
public static String tranDecimalToBinaryStr(int dec){
return tranBinaryStackToStrBuilder(tranDecimalToBinaryStack(dec)).toString();
}
public static void main(String[] args){
for(int i = -10 ; i < 100; i ++ )
System.out.println(tranDecimalToBinaryStr(i));
}
补充:基础API不牢啊,我上面的代码负数还考虑不够
其实用Integer.toBinaryString就可以的。。。。。
比如 System.out.println(Integer.toBinaryString(-5));
就是11111111111111111111111111111011