请大家给算法技巧 ,谢了!

解决方案 »

  1.   

    什么意思啊?是这样么?public class NumberUtil {
        
        /**
         * 将 int 类型数据转成二进制的字符串,不足 int 类型位数时在前面添“0”以凑足位数
         * @param num
         * @return
         */
        public static String toFullBinaryString(int num) {
            char[] chs = new char[Integer.SIZE];
            for(int i = 0; i < Integer.SIZE; i++) {
                chs[Integer.SIZE - 1 - i] = (char)(((num >> i) & 1) + '0');
            }
            return new String(chs);        
        }
        
        /**
         * 将 long 类型数据转成二进制的字符串,不足 long 类型位数时在前面添“0”以凑足位数
         * @param num
         * @return
         */
        public static String toFullBinaryString(long num) {
            char[] chs = new char[Long.SIZE];
            for(int i = 0; i < Long.SIZE; i++) {
                chs[Long.SIZE - 1 - i] = (char)(((num >> i) & 1) + '0');
            }
            return new String(chs);        
        }
    }
      

  2.   

    是手算还是机器算?
    手算:先背出1,2,4,8,16,32...1024,2048...
    345 = 256 * 1 + 128 * 0 + 64 * 1 + 32 * 0 + 16 * 1 + 8 * 1 + 4 * 0 + 2 * 0 + 1 * 1
    ===> 101011001
    程序算
    最好使用位操作,或者Integer.toBinaryString(i)