2進数表示プログラム

電子計算機基礎という授業で、10進数で入力される数字を2進表記で出力するプログラムをC言語で作成しなさいという問題が出ました。
普通にやっても面白くないので、ショートコーディングしてみました。

具体的なルールは以下の通り。

  • 複数のデータセットが与えられる
  • 1〜32767の数は2進表記で入力と同じ値を出力
  • 負の数や32768以上の値は"E"と出力
  • 0で終了
  • no leading zeros
main(i,n,a,b)
{
	for(;b=!scanf("%d",&n),n;puts(i<14?"":"E"))
		for(i=32;(b|=a=(n>>--i)&1)?~i&&i<15&&putchar(a+48):~i;);
}

改行・Tabを消去して114Bytes。
100Bytes以下にできたら先輩に寿司を奢ってもらう約束だったけど叶いませんでしたorz