#include <bits/stdc++.h>
using namespace std;
long long int x, s;
vector<vector<long long int> > dp(8, vector<long long int>(63, -1));
long long int f(int i, bool c, bool apos, bool bpos) {
  if (i == 63) return !c && apos && bpos;
  if (dp[c + 2 * apos + 4 * bpos][i] != -1)
    return dp[c + 2 * apos + 4 * bpos][i];
  bool ux = x & (1LL << i), us = s & (1LL << i);
  long long int ret = 0;
  if (c) {
    if (ux && us)
      ret += 0;
    else if (ux && !us)
      ret += f(i + 1, 1, apos, 1) + f(i + 1, 1, 1, bpos);
    else if (!ux && us)
      ret += f(i + 1, 0, apos, bpos) + f(i + 1, 1, 1, 1);
    else if (!ux && !us)
      ret += 0;
  } else {
    if (ux && us)
      ret += f(i + 1, 0, apos, 1) + f(i + 1, 0, 1, bpos);
    else if (ux && !us)
      ret += 0;
    else if (!ux && us)
      ret += 0;
    else if (!ux && !us)
      ret += f(i + 1, 1, 1, 1) + f(i + 1, 0, apos, bpos);
  }
  return dp[c + 2 * apos + 4 * bpos][i] = ret;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin >> s >> x;
  cout << f(0, 0, 0, 0);
}
