#[Japt](https://github.com/ETHproductions/Japt), <s>29</s> 11 [bytes](https://en.wikipedia.org/wiki/ISO/IEC_8859-1)

 Uo ®¤¬r@X^Y

[Try it online!](http://ethproductions.github.io/japt?v=master&code=VW8grqSsckBYXlk=&input=NDI=)

The OP said:

> If you like, you can also add a separator.

So to save about 4 bytes, I use a separator of `,`, which is automatically inserted.

###Ungolfed and explanation

 Uo mZ{Zs2 q rXY{X^Y}}
 // Implicit: U = input number
 Uo // Create an array of integers in the range `[0, U)`. 
 mZ{Zs2 // Map each item in this range to Z.toString(2),
 q rXY{ // split into chars, and reduce by
 X^Y}} // XORing.
 // Implicit: output last expression