方法1:

#include <cstdio>
using namespace std;
int main(){
    int m;
    int n;
    while(scanf("%d%d",&m,&n)!=EOF && m!=0 && n!=0){
        int answer = 0;
        if(m == n){
            answer = 1;
        }else if(m <= n){
            answer = 1;
            int left = 2 * m;
            int right = 2 * m + 1;
            while(right < n){
                answer += right - left + 1;
                left = 2 * left;
                right = 2 * right + 1;
            }
            if(n >= left){
                answer += n - left + 1;
            }
        }
        printf("%d\n",answer);
    }
    return 0;
}

方法二:

#include <iostream>
using namespace std;
int main()
{
    int m,n;
   while(cin>>m>>n&&(m!=0||n!=0)){
    int t=1,s=0,sum=1;
    int i=m;
    while(i<n){
        i=2*i+1;
        s++;
        }
     for(int j=s-1;j>0;j--){
         t=t*2;
         sum=sum+t;
         }
         t=t*2;
    if(n-m*t>=0)sum=sum+n-(m*t)+1;
    cout<<sum<<endl;}
}