- ベストアンサー
16進数の表し方について
すごく基本的なことだと思いますが、教えてください。 -128など、負の数を16進数で表す場合どのように表したら、 よいのですか。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
> ただ、まだ、-128が80Hになるのがわかりません。 2進数から16進数への変換は理解されているでしょうか? -128を8ビットの2進数の2の補数で表現すると 10000000 なので、これを16進数にすると、80(Hex)になります。 数学では、何進数だろうが数値の前にマイナスを付けることで、負の数を表現できますが、 カテゴリがコンピュータなのでコンピュータ内部での負の数の扱い方という観点から説明しました。 負の数の表現には、2の補数以外にも、1の補数、符号ビット+絶対値、エクセス表現などがありますが、 2の補数(n進数のnの補数)は、減算を加算回路で計算できるという利点があるため広く使われています。 10000000だと、128なのか、-128なのか分からないじゃないか、と思われるかも知れませんが、 プログラマが、その時々に符号付き整数を扱っているのか、符号なし整数を扱っているのか、 認識していれば(又はコンパイラに指示をしていれば)混乱はありません。 http://mt-net.vis.ne.jp/ADFE_mail/0041.htm http://www.sist.ac.jp/~suganuma/cpp/1-bu/1-sho/1-sho.htm
その他の回答 (5)
- mii-japan
- ベストアンサー率30% (874/2820)
基本として、16進数表記には-(負)はありません 10進表記の-(負)をどうするのかは、変換する定義によります 通常、32ビット、64ビット、128ビットの場合を定義します 整数、浮動小数点実数等、いろいろな定義があります(IEEE定義とか) 詳しくは、上記をキーワードで検索してください
- nofutureforyou
- ベストアンサー率9% (25/277)
マイナス(-)をつけたらいいだけだと思いますが。
- harlan
- ベストアンサー率77% (234/303)
負の数を表す場合、最近のコンピュータの多くは2の補数を使います。 8ビットでの表現だと 2進数 符号なし 2の補数 00000000 0 0 00000001 1 1 ・・・ 01111111 127 127 10000000 128 -128 10000001 129 -127 ・・・ 11111110 254 -2 11111111 255 -1 となるので、-128は、80Hになります。
ウィンドウスの電卓でやると FFFFFFFFFFFFFF80 と表示されます。整数を何バイトで表現するかで変わるでしょうが。
- silk1
- ベストアンサー率11% (5/44)
補数で表します。
お礼
ありがとうございます。 最近は、2の補数をつかうんですね。 ただ、まだ、-128が80Hになるのがわかりません。 もう少し詳しく教えてもらえないでしょうか? お願いします。m(_ _)m