• ベストアンサー

十進数と十六進数

過去の質問を見てみたのですがよくわからなかったので質問します。 計算機の授業で十進数の負の数を十六進数に直すという方法を習ったのですが、いまいちわかりません。 問題は「次に示した十進数を二桁の十六進数で表せ」というもので、十進数は「-34」「-105」などです。 基本的なことは分かっているつもりです。 上記の問題の解き方を教えてください。 よろしくお願いします。

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

  • ベストアンサー
  • otaking
  • ベストアンサー率21% (33/155)
回答No.5

こんにちは。 単刀直入に答えを書きますと、 十進の-34は十六進だとD7h、 同じく-105は十六進だと97hです。 ちなみに-1はFFhとなります。 十進の-1を2桁の16進にする場合を例にして説明しますと、 1を二進に直すと 0000 0001 全桁を反転します 1111 1110  1を加えます   1111 1111 これを十六進に直す  F    F ですね。

sora89
質問者

お礼

回答ありがとうございます。 よく分かりました。 やっと疑問がはれました。 やっぱり二進数のときに8桁にしなければならないのですね。 助かりました。 本当にありがとうございました。

その他の回答 (4)

  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.4

負の10進数を16進数に直すのはちょっと大変です。 負の2進数に直してから4ビット区切りで16進数にするのが実用的です。

sora89
質問者

お礼

ようやく分かりました。 ありがとうございました。

回答No.3

絶対値をとって16進数で表記し、-(マイナス記号)をつけるだけです。お手元の計算機のテキストにもそう書いてあるはずです。 計算機内でどう表現するかはまた別の問題です。整数の場合、#1の方のご回答にあるように補数を使うのが多いですね。理屈上MSB1ビットを符号用に確保し、残りのビットで絶対値を表現する形式もあります。実数(固定小数点、浮動小数点)の場合、絶対値+符号で表現されます。 十進数コンピュータがあったとしたら、負数はどう表現されるか想像しながら問題を解いて下さい。

sora89
質問者

お礼

ようやく分かりました。 ありがとうございました。

sora89
質問者

補足

回答ありがとうございます。 質問の仕方が悪かったみたいなので補足します。 十六進数に直すとき、マイナスの記号はつけないやり方のようです。

  • massie
  • ベストアンサー率17% (46/265)
回答No.2

負の数というのがよく分かりませんが、正の数として処理し、マイナスをつけるのでいいのでしょうか?  第1位は「16の0乗、つまり1がいくるあるか」  第2位は「16の1乗、つまり16がいくつあるか」  第3位は「16の2乗、つまり256がいくつあるか」  を表します。  十進数の34は16×2+1×2だから十六進数では「22」よってー34なら「ー22」  十進数の105は16×6+1×9だから十六進数では「69」よってー105なら「-69」ではいけないのでしょうか?

sora89
質問者

お礼

ようやく分かりました。 ありがとうございました。

noname#4958
noname#4958
回答No.1

まずは2進数に直してから16進数に変換してみるとわかりやすいと思います。 詳しくは参考URLを見てみてください。

参考URL:
http://www005.upp.so-net.ne.jp/h-masuda/ProText/Hard/hard03.html
sora89
質問者

お礼

理解できました。 ありがとうございました。

sora89
質問者

補足

回答ありがとうございます。 ひとつ質問なのですが、二進数に直すとき、8桁必要なのですか? たとえば十進数の「2」は二進数では「00000010」のように。 この部分が教科書には書いていないので、あいまいでよく分からないのです。

関連するQ&A