C++ (188 bytes/chars):

    #include <cstdlib>
    #include <iostream>
    #define y if(b)f(b-1)
    int x=0;
    void f(int b){y;std::cout<<(x^=1<<b)<<' ';y;}
    int main(int,char**v){int b=std::atoi(v[1]);std::cout<<x<<' ';y;}

Specify the number of bits on the command line and it will print a list of space separated integers.