• ベストアンサー

16進数→2進数→16進数の際の符号

いつもお世話になっております。 今回は基数変換についてお聞きしたいです。 フォームに入っている16進数の文字列(12ABなど)を受け取って、それを2進数にしてビットを反転させた後に再び16進数にしたいのです。 その部分はtoStringでできそうなのですが、この場合、符号はどのようになるのでしょうか? 少しやってみた感じでは符号なしのように動いたのですが実際はどうなっているのでしょうか? 探してみましたがはっきりと書いてあるところが見当たりませんでしたので詳しい方、ご教授願います。

質問者が選んだベストアンサー

  • ベストアンサー
  • aigaion
  • ベストアンサー率47% (287/608)
回答No.1

a = 0x12AB; document.write(a.toString(16)+"<BR />"); a = ~0x12AB; document.write(a.toString(16)+"<BR />"); a = 0x12AB ^ 0xFFFF;document.write(a.toString(16)+"<BR />"); 出力 12ab -12ac ed54 ビット反転の演算子を使っていたら普通に符号が出ると思うので 0xFFFFあたりで排他的論理和をとったのかな? まぁ、それを前提として・・・違ったら放置で(ぁ JavaScriptの整数の内部表現は、符号付き32ビットみたいです。 iec1128さんがやっているように16bitの範囲で排他的論理和を利用してビット反転をするなら問題ないですが 32bitの値を扱う場合は、最上位ビットが立つと符号が付いてしまいます。 また、符号付きで32bit以上の値になると型が整数型ではなく浮動小数点型になってしまうようなので そのあたりも注意が必要かと思います。 >はっきりと書いてあるところが見当たりません 使い方についての記事が多くて厳密に日本語で仕様が書いてあるところが ほとんどなかったですね^-;;

すると、全ての回答が全文表示されます。

関連するQ&A