#include <bits/stdc++.h>
using namespace std;
long long dp[47][2][2];
long long solve(long long x, long long y) { //кількість пар (a, b), таких що a <= x, b <= y, a&b = 0
if (x < 0 || y < 0)
return 0;
for(int i = 0; i < 47; i++)
for(int j = 0; j < 2; j++)
for(int k = 0; k < 2; k++)
dp[i][j][k] = 0;
dp[0][0][0] = 1;
for(int i = 0; i < 30; i++)
for(int less_x = 0; less_x < 2; less_x++)
for(int less_y = 0; less_y < 2; less_y++){
long long val = dp[i][less_x][less_y];
int x_i = (x >> (29 - i)) & 1; //значення і-того старшого біта в x
int y_i = (y >> (29 - i)) & 1; //значення і-того старшого біта в y
dp[i + 1][less_x || (x_i == 1)][less_y || (y_i == 1)] += val; // a_i = 0, b_i = 0
if (less_x || x_i == 1)
dp[i + 1][less_x][less_y || (y_i == 1)] += val; // a_i = 1, b_i = 0
if (less_y || y_i == 1)
dp[i + 1][less_x || (x_i == 1)][less_y] += val; // a_i = 0, b_i = 1
}
long long res = 0;
for(int less_x = 0; less_x < 2; less_x++)
for(int less_y = 0; less_y < 2; less_y++)
res += dp[30][less_x][less_y];
return res;
}
int main()
{
int l, r;
cin >> l >> r;
long long res = solve(r, r) - solve(l - 1, r) - solve(r, l - 1) + solve(l - 1, l - 1);
if (l == 0)
res++;
cout << res / 2 << endl;
return 0;
}