適当に作ってみた
はやいかどうかは知らん
#include <stdio.h>
#define N 30
int main(void)
{
     int i, count = 0;
     char buff[N+1] = {0};

     while(count<N) {
          for(i=0; i<=count; i++) {
               if(buff[i]) {
                    buff[i] = 0;
                    if(i==count) count++;
               }
               else {
               buff[i] = 1;
                    break;
               }
          }
          for(i=N; i>=0; i--) putchar(buff[i]+'0');
          putchar('\n');
     }
     return 0;
}