package com.interview.algorithms.bit; /** * Created_By: stefanie * Date: 14-10-20 * Time: 下午10:29 */ public class C16_4_ReverseBinaryCode { public static int reverse(int number){ if(number == 0) return 0; int end = (number & 1) == 0? 1 : 0; return (reverse(number >>> 1) << 1) + end; } public static int reverseFully(int number){ return reverseFully(number, 32); } private static int reverseFully(int number, int offset){ if(offset == 0) return 0; int end = (number & 1) == 0? 1 : 0; return (reverseFully(number >>> 1, --offset) << 1) + end; } }