#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e6 + 1;
const int MOD = 1e9 + 7;
int main() {
  long long s, x, an;
  scanf("%lld%lld", &s, &x);
  if (x == 0) {
    if (s % 2 == 0) {
      printf("1");
    } else {
      printf("0");
    }
    return 0;
  }
  if (x > s) {
    printf("0");
    return 0;
  }
  an = (s - x) / 2;
  if ((s - x) % 2) {
    printf("0");
    return 0;
  }
  long long tx = x, ta = an;
  vector<int> vx, va;
  while (tx) {
    vx.push_back(tx % 2);
    tx /= 2;
  }
  while (ta) {
    va.push_back(ta % 2);
    ta /= 2;
  }
  if (vx.size() < va.size()) {
    int tn = va.size() - vx.size();
    for (int i = 0; i < tn; ++i) {
      vx.push_back(0);
    }
  }
  if (va.size() < vx.size()) {
    int tn = vx.size() - va.size();
    for (int i = 0; i < tn; ++i) {
      va.push_back(0);
    }
  }
  int n = vx.size(), k = 0;
  long long ans = 0;
  for (int i = 0; i < n; ++i) {
    if (vx[i] && va[i]) {
      printf("%lld", ans);
      return 0;
    }
    if (vx[i]) {
      k++;
    }
  }
  ans = 1;
  for (int i = 0; i < k; ++i) {
    ans *= 2;
  }
  if (an == 0) {
    ans -= 2;
  }
  printf("%lld", ans);
  return 0;
}
