• 締切済み

8進数から16進数 16進数から8進数

たびたびお世話になっています。 タイトルの通りなんですが、8進数から16進数、16進数から8進数のやり方が分かりません・・・。 例題をまじえて教えて下さい。 小数の問題も教えて下さい。 お願いします。

みんなの回答

  • liar_adan
  • ベストアンサー率48% (730/1515)
回答No.2

#1さんの答で正解ですが、ちょっとコツがあります。 16進数は、2進数の4ケタがひとかたまりになっているものであり、 8進数は、2進数の3ケタがひとかたまりになっているものです。 16進数の3ケタ、もしくは8進数の4ケタをひとまとめにすれば、 どちらも2進数の12ケタとなります。 たとえば、8進数で 57314506 という数があったとすれば、 5731 4506 とまず4ケタに分解します。 それから、5→101のように個々の数を2進数に変換します。 101 111 011 001 100 101 000 110 これを2進数4ケタごとに組み替えて、 1011 1101 1001 1001 0100 0110 そして、1011→11(10進数)→B(16進数)のように変換します。 BD9 946 結局、16進数にするとBD9946となります。 基本的には同じですが、大きなケタのとき、 ぜんぶつながった2進数にするより間違えにくくていいと思います。 16進数→8進数の場合も同様です。(今度は16進数を3個ごとに区切る) また、 4AD3F(16進数) のように3個に区切れない場合、 頭に0や00をつけて桁数をふやします。 →04AD3F →04A D3F →0000 0100 1010 1101 0011 1111 →000 001 001 010 110 100 111 111 →0112 6477 →1126477(8進数) 少数も同様です。 たとえば0.7109375(10進数)という数を例にします。 これは91/128です。 2進数にすると0.1011011になります。 0を付加して3ケタごとに区切ると、0.101 101 100となり、 これを8進数に直すと0.554 1/8 * 5 + 1/8^2 * 5 + 1/8^3 * 4 = 0.7109375 なのでちゃんと8進少数になっています。 これを(0を付加して)4ケタにすると、 0.5540 →0.101 101 100 000 →0.1011 0110 0000 →0.B 6 0 →0.B6(16進) 1/16 * B(=11) + 1/16^2 * 6 = 0.7109375 となるので合っています。

  • usotsuki
  • ベストアンサー率46% (147/319)
回答No.1

繰り返される質問だたお思われますが、一度2進数に変換してから変換します。 二進数を3桁区切りで8進数、4桁区切りで16進数です。 たとえば、便宜的に、4桁ごとにスペースを入れました。 1010 1001 1000 1110 1100 1010 1000 0110 0010 0001.0001 0010 0011.... 16進数では、4桁区切り a987654321.123... と表記されます。 8進法では、3桁区切り 便宜的に3桁ごとに、スペースを入れました。 1 010 100 110 000 111 011 001 010 100 001 100 100 001.000 100 100 011.... 12460731241441.0443... 0 <-> (0)000 0 1 <-> (0)001 1 2 <-> (0)010 2 3 <-> (0)011 3 4 <-> (0)100 4 5 <-> (0)101 5 6 <-> (0)110 6 7 <-> (0)111 7 ここまで、8進数の範囲 8 <-> 1000 8 9 <-> 1001 9 10 <-> 1010 a 11 <-> 1011 b 12 <-> 1100 c 13 <-> 1101 d 14 <-> 1110 e 15 <-> 1111 f ここまで16進数 左から、10進数、2進数()を付けたのは、8進数の場合、8進16進の表記です。 補)2進数のところで、目が「ちかちか」して桁を間違えているかも知れません。なんせ、年なもんで~~;;;; 小数以下は、切の良い数字でないと桁が長くなってしまうので、"...."で表示しました。