Let $\mathbb{N}$ be the set of all positive integers. Find all functions $f : \mathbb{N} \rightarrow \mathbb{N}$ such that $f(x) + y$ and $f(y) + x$ have the same number of $1$'s in their binary representations, for any $x,y \in \mathbb{N}$.
1. **Define the function and the problem statement:**
   Let $\mathbb{N}$ be the set of all positive integers. We need to find all functions $f : \mathbb{N} \rightarrow \mathbb{N}$ such that $f(x) + y$ and $f(y) + x$ have the same number of $1$'s in their binary representations for any $x, y \in \mathbb{N}$.

2. **Introduce the notation:**
   For $n \in \mathbb{N}$, let $d(n)$ denote the number of $1$'s in the binary representation of $n$. Let $P(x, y)$ denote the statement that $f(x) + y$ and $f(y) + x$ have the same number of $1$'s in their binary representation.

3. **Claim 1:**
   For any $y, n \in \mathbb{N}$ with $2^n > f(y)$, $f(2^n - f(y)) + y$ is a power of two.

   **Proof:**
   Consider $P(2^n - f(y), y)$. This gives us that $2^n$ and $f(2^n - f(y)) + y$ have the same number of $1$'s in their binary representation. Since $2^n$ has exactly one $1$, $f(2^n - f(y)) + y$ must also have exactly one $1$. Therefore, $f(2^n - f(y)) + y$ is a power of two. $\blacksquare$

4. **Claim 2:**
   $f(y + 2^k) - f(y)$ is a power of two for any $k \geq 0$ and $y \geq 2^k$.

   **Proof:**
   Choose an $n$ such that $n > 1000 + \log_2(10 + |f(y + 2^k) - f(y)|)$. By Claim 1, $f(2^n - f(y)) = 2^t - y > 0$ for some $t$ with $t \geq k + 1$. Therefore, $P(2^n - f(y), y + 2^k)$ gives:
   \[
   d(2^n - f(y) + f(y + 2^k)) = d(2^t + 2^k) = 2
   \]
   since $t \geq k + 1$. If $f(y) = f(y + 2^k)$, then the left-hand side is $d(2^n) = 1$, which is a contradiction. If $f(y) > f(y + 2^k)$, and $f(y) - f(y + 2^k)$ has $m < \log_2(10 + |f(y + 2^k) - f(y)|)$ digits, then:
   \[
   d(2^n - f(y) + f(y + 2^k)) \geq n - m - 1 \geq 999 > 2
   \]
   since $2^n - f(y) + f(y + 2^k)$ starts with at least $n - m - 1$ ones, which is a contradiction. Therefore, $f(y + 2^k) > f(y)$, and since $n$ is bigger than the number of digits in $f(y + 2^k) - f(y)$, there is no carry-over, so:
   \[
   2 = d(2^n - f(y) + f(y + 2^k)) = 1 + d(f(y + 2^k) - f(y))
   \]
   which gives us that $f(y + 2^k) - f(y)$ is a power of two, as required. $\blacksquare$

5. **Derive the form of $f(y)$:**
   Claim 2 gives us $f(y + 1) - f(y) = 2^{t(y)}$ for some $t(y)$, for all $y$. But for $y \geq 2$, $f(y + 2) - f(y)$ is also a power of two, implying that $2^{t(y)} + 2^{t(y + 1)}$ is a power of two, which is only possible if $t(y) = t(y + 1)$ for all $y \geq 2$. Therefore, $f(y + 1) - f(y)$ is a constant power of two for all $y \geq 2$, say $2^k$. This gives us $f(y) = 2^k y + c$ for some constant $c$, for all $y \geq 2$.

6. **Verify the solution:**
   Putting this in Claim 1, we get:
   \[
   2^{k+n} - (2^{2k} - 1)y - (2^k - 1)c
   \]
   is a power of two for any $y \geq 2$ and any sufficiently large $n$. This is only possible if, for all $y \geq 2$,
   \[
   (2^{2k} - 1)y + (2^k - 1)c = 0
   \]
   which implies:
   \[
   (2^k - 1)((2^k + 1)y + c) = 0
   \]
   This can only hold for all $y \geq 2$ if $2^k = 1$, i.e., $f(y) = y + c$ for all $y \geq 2$. But Claim 1 for $y = 1$ and large $n$ gives:
   \[
   2^n - f(1) + 1 + c
   \]
   is a power of two for all sufficiently large $n$, which is only possible if $f(1) = 1 + c$. Therefore, the only solutions are:
   \[
   \boxed{f(x) = x + c \ \ \forall x \in \mathbb{N}}
   \]
   where $c$ is a non-negative integer.