- ベストアンサー
十進数と十六進数
過去の質問を見てみたのですがよくわからなかったので質問します。 計算機の授業で十進数の負の数を十六進数に直すという方法を習ったのですが、いまいちわかりません。 問題は「次に示した十進数を二桁の十六進数で表せ」というもので、十進数は「-34」「-105」などです。 基本的なことは分かっているつもりです。 上記の問題の解き方を教えてください。 よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 単刀直入に答えを書きますと、 十進の-34は十六進だとD7h、 同じく-105は十六進だと97hです。 ちなみに-1はFFhとなります。 十進の-1を2桁の16進にする場合を例にして説明しますと、 1を二進に直すと 0000 0001 全桁を反転します 1111 1110 1を加えます 1111 1111 これを十六進に直す F F ですね。
その他の回答 (4)
- ymmasayan
- ベストアンサー率30% (2593/8599)
負の10進数を16進数に直すのはちょっと大変です。 負の2進数に直してから4ビット区切りで16進数にするのが実用的です。
お礼
ようやく分かりました。 ありがとうございました。
- 2718281828
- ベストアンサー率36% (66/181)
絶対値をとって16進数で表記し、-(マイナス記号)をつけるだけです。お手元の計算機のテキストにもそう書いてあるはずです。 計算機内でどう表現するかはまた別の問題です。整数の場合、#1の方のご回答にあるように補数を使うのが多いですね。理屈上MSB1ビットを符号用に確保し、残りのビットで絶対値を表現する形式もあります。実数(固定小数点、浮動小数点)の場合、絶対値+符号で表現されます。 十進数コンピュータがあったとしたら、負数はどう表現されるか想像しながら問題を解いて下さい。
お礼
ようやく分かりました。 ありがとうございました。
補足
回答ありがとうございます。 質問の仕方が悪かったみたいなので補足します。 十六進数に直すとき、マイナスの記号はつけないやり方のようです。
- massie
- ベストアンサー率17% (46/265)
負の数というのがよく分かりませんが、正の数として処理し、マイナスをつけるのでいいのでしょうか? 第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」ではいけないのでしょうか?
お礼
ようやく分かりました。 ありがとうございました。
まずは2進数に直してから16進数に変換してみるとわかりやすいと思います。 詳しくは参考URLを見てみてください。
お礼
理解できました。 ありがとうございました。
補足
回答ありがとうございます。 ひとつ質問なのですが、二進数に直すとき、8桁必要なのですか? たとえば十進数の「2」は二進数では「00000010」のように。 この部分が教科書には書いていないので、あいまいでよく分からないのです。
お礼
回答ありがとうございます。 よく分かりました。 やっと疑問がはれました。 やっぱり二進数のときに8桁にしなければならないのですね。 助かりました。 本当にありがとうございました。