/*program*/
int a=12;
printf("%d\n",a);
/**/
a.out -12

にならないのは、ちゃんと区別してるからだと思うんですね。

>>50
一番上のビットが1か0で正負が変わって、残りのビットが
絶対値かと思ってました。違うんですかね。