代码如下:
/* * $RCSfile: Test.java,v $ * $Revision: 1.1 $ * $Date: 2009-2-23 $ * * Copyright (C) 2005 Bettem, Inc. All rights reserved. * * This software is the proprietary information of Bettem, Inc. * Use is subject to license terms. */ package binary; /** * <p>Title: Test</p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2006</p> * @author lihan * @version 1.0 */ public class Test { Test(){} /** * 根据byte转换成二进制,8位 * @param b * @return */ public String toBinaryString(byte b) { int num = b; String str = ""; StringBuffer sb =new StringBuffer(); //如果是正数 if(b>=0) { str+="0"; for(int i =1;i<8;i++) { sb.append(num%2); num = num/2; } } //如果是负数 //负数以它正值的补码形式表达 //补码=反码+1 else { str+="1"; num = Math.abs(num)-1; for(int i =1;i<8;i++) { if(num%2==0) { sb.append(1); num = num/2; } else { sb.append(0); num = num/2; } } } str += sb.reverse().toString(); return str; } /** * 根据int值转换成二进制值,32位 * @param b * @return */ public String toBinaryString(int b) { int num = b; String str = ""; StringBuffer sb =new StringBuffer(); //如果是正数 if(b>=0) { str+="0"; for(int i =1;i<32;i++) { sb.append(num%2); num = num/2; } } //如果是负数 //负数以它正值的补码形式表达 //补码=反码+1 else { str+="1"; num = Math.abs(num)-1; for(int i =1;i<32;i++) { if(num%2==0) { sb.append(1); num = num/2; } else { sb.append(0); num = num/2; } } } str += sb.reverse().toString(); return str; } public static void main(String args[]) { Test t = new Test(); int b = -6; String str = t.toBinaryString(b); System.out.println(str); System.out.println(Integer.toBinaryString(-6)); } }
我这里就写了一个方法测试,另一个大家也可以去测试。测试生成数据:
11111111111111111111111111111010
11111111111111111111111111111010