XOR Profit Problem

any efficient method than this.

Hey @RULEREMPIRES
An efficient solution is to consider pattern of binary values from L to R. We can see that first bit from L to R either changes from 0 to 1 or it stays 1 i.e. if we take the XOR of any two numbers for maximum value their first bit will be fixed which will be same as first bit of XOR of L and R itself. After observing the technique to get first bit, we can see that if we XOR L and R, the most significant bit of this XOR will tell us the maximum value we can achieve i.e. let XOR of L and R is 1xxx where x can be 0 or 1 then maximum XOR value we can get is 1111 because from L to R we have all possible combination of xxx and it is always possible to choose these bits in such a way from two numbers such that their XOR becomes all 1.

public static int profit(int x, int y) {

        int num = x ^ y;
        int msb = 0;
        while (num != 0) {
            num = num >> 1;
            msb++;
        }
        int result = 0;
		int two=1;
        while (msb-- > 0) {
			result += two;
			two <<= 1;
        }
        return result ;
    }