-2 进制 % -2 结果是 -1 0 1
感觉这个会了任意负进制都会了
http://www.cnblogs.com/scau20110726/archive/2012/12/21/2828420.html 解释的蛮好的
#includeint n; int main() { int cas = 1,n,k,t,i; int a[100]; scanf("%d",&t); while(t--) { scanf("%d",&n); k = 0; while(1) { a[k++] = n % (-2); n /= (-2); if(a[k-1] == -1) { a[k-1] = 1; n++; } if(n == 0) break; } printf("Case #%d: ",cas++); for(i = k - 1;i >= 0; i--) printf("%d",a[i]); puts(""); } return 0; }