数値システムに関する基本的なものが欠けているように感じますが、ビットごとの演算子で再生しようとしている以下のコードで本当に混乱しています:
x=56;
printf("\nHere :\n%x %x\n",x,077);
x=x& ~077;
printf("%x\n",x);
077 は 8 進数 (16 進数 3f) と見なされます。77 だけを入力すると、10 進数 (16 進数 4d) として扱われます。177 を入れると、10 進数 (hex b1) として扱われます。Richie と Kernighan による C プログラミングという本を参照しています。
助けてください。