http://piza2.2ch.net/test/read.cgi?bbs=tech&key=1001998049&st=863&to=863&nofirst=true
あめ猫さんはちょっと間違ったみたい
0x10000 じゃなくて 0x10000-1 です

で補数を取った時の掛算のやり方
 1、 絶対値を求めてから掛算して 結果の符号によって再度負数にする方法
    桁数を可変にする多倍長の場合はこっちでやった方がいいかも

 2、そのまま掛算する場合は
    Bが負数の場合 Bを単純整数とみなすと B-N^Mになりますから
    A*(B-N^M)=A*B-A*N^M
   A,Bがともに負数の場合は
    (A-N^M)*(B-N^M)=A*B-(A+B)*N^M+N^M^2 ・・・・N^M^2 は桁外になるので

   結局 A,Bを符号無整数とみなして掛算して 負数なら M桁目から引けばよいという事になります