• ベストアンサー

16進数の表し方について

すごく基本的なことだと思いますが、教えてください。 -128など、負の数を16進数で表す場合どのように表したら、 よいのですか。

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

  • ベストアンサー
  • harlan
  • ベストアンサー率77% (234/303)
回答No.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)
回答No.5

基本として、16進数表記には-(負)はありません 10進表記の-(負)をどうするのかは、変換する定義によります 通常、32ビット、64ビット、128ビットの場合を定義します 整数、浮動小数点実数等、いろいろな定義があります(IEEE定義とか) 詳しくは、上記をキーワードで検索してください

回答No.4

マイナス(-)をつけたらいいだけだと思いますが。

  • harlan
  • ベストアンサー率77% (234/303)
回答No.3

負の数を表す場合、最近のコンピュータの多くは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になります。

W07A09
質問者

お礼

ありがとうございます。 最近は、2の補数をつかうんですね。 ただ、まだ、-128が80Hになるのがわかりません。 もう少し詳しく教えてもらえないでしょうか? お願いします。m(_ _)m

noname#182251
noname#182251
回答No.2

ウィンドウスの電卓でやると FFFFFFFFFFFFFF80 と表示されます。整数を何バイトで表現するかで変わるでしょうが。

  • silk1
  • ベストアンサー率11% (5/44)
回答No.1

補数で表します。

参考URL:
http://www5f.biglobe.ne.jp/~pafu/kihonweb/gozen/01/1_5.htm

関連するQ&A