之前的方式都借助了Integer的
toBinaryString方法,如果不借助这个方法,有没有办法
获取到int的32位字符串呢
方法四
public static void main(String args[]){ int a = 1000001011; System.out.println(getFullBinaryString(a)); } public static String getFullBinaryString(int num){ char [] mString = new char[32]; int mUseValue = 0; for (int i = 0;i<32;i++){ if (i==0){ mUseValue=Integer.MIN_VALUE; } else { mUseValue = new Double(Math.pow(2,31-i)).intValue(); } mString[i]= (mUseValue&num)==0?'0':'1'; } return new String (mString); }
这种方式其实是从头到尾,32个字节通过&运算一个个取。
因为100000。。。32位 代表Integer.MIN_VALUE,
所以if (i==0){ mUseValue=Integer.MIN_VALUE; }
方法五
public static void main(String args[]){ int a = 1000001011; System.out.println(getFullBinaryString(a)); } public static String getFullBinaryString(int num){ char [] mChars = new char [32]; for (int i = 0;i<32;i++){ mChars[31-i]= (char)((num>>i&1)+'0'); } return new String (mChars); }打印如下0011 1011 1001 1010 1100 1101 1111 0011
其思路是一直取32位的最后一位,每次取完之后,右移一位,继续取,
其中,加‘0’其实是对ascii码的加一或者加零操作。
(char)转换后,其char值要么是零,要么是一。