• 締切済み

8進法 16進法 2進法について

8進法 16進法 2進法について、 10進数を各進法に変換する方法を教えて下さい。

みんなの回答

  • haporun
  • ベストアンサー率40% (230/562)
回答No.6

言語はなんでしょうか。 VBでの方法も、どの言語でも使えそうな計算方法もみなさん書いてらっしゃるので、Cオンリーな方法をご紹介します。 共用体とビットフィールドをつかって、計算なくn進数を求める方法です。 ただしnは2のm乗です。 ここでは32ビット整数を16進数に変換します。 以下をmainの中かどっかに貼り付けてください。 ---------------------------------------- union{ struct{ unsigned keta1: 4; //1桁目 unsigned keta2: 4; //2桁目 unsigned keta3: 4; //3桁目 unsigned keta4: 4; //4桁目 unsigned keta5: 4; //5桁目 unsigned keta6: 4; //6桁目 unsigned keta7: 4; //7桁目 unsigned keta8: 4; //8桁目 }; unsigned long kazu; }; kazu = 1234567890; ---------------------------------------- これを実行しただけで、たとえば16進数の3桁目がketa3に入っています。 unsigned keta1: 4; の4の部分を3とかに変えて、合計が32ビットを超えるように桁を増やせば、8進数(2の3乗)とかもわかります。 この方法ではketa2とかに13とかいう値が入っているので、文字Dとかに変換しなければなりませんね。 この方法は、アルゴリズムを考えると、計算などで求めるよりもはるかに高速です。 命令文は代入だけですから。 ぐだぐだ書いてしまいましたが、Cを使っていなければ何の意味もありませんね。 共用体とビットフィールドが大好きな、はぽるんでした。

  • vcmshiro
  • ベストアンサー率44% (32/72)
回答No.5

16進数がわかりずらい。との事でしたので補足します。 2進数は、おわかりですね。 2進数を表せば16進数とは親戚の様に簡単になります。 01000001 →これを4つづつに分ける→ 0100 0001 そして、左と右に分けて次のルールで勘定する。 ○○○●→1 (十進数) ○○●○→2 (十進数) ○●○○→4 (十進数) ●○○○→8 (十進数) もし、0001 なら、十進数で「1」。 もし、0010 なら、十進数で「2」。 もし、0011 なら、十進数の1と2を足した答え「3」。 もし、0101 なら、十進数の1と4を足した答え「5」。 もし、0111 なら、十進数の1と2と4を足した答え「7」。 ・・・以下同様 この様な感じで変換すると、簡単になるよ。 01000001 →これを4つづつに分ける→ 0100 0001 0100 0001は、 0100 → 4(十進数) 0001 → 1(十進数) になるので、 41(16進数) もうちょっと難しい問題をあげると・・・ 11001111(2進数)を変換するとこうなります。 1100 1111 の二つに分け 8+4 と 8+4+2+1 12と15 だから、「1215」と言う答えは×です。 16進数は、10以上は英字になるからです。 十進数対16進数の表を書いておきますので参考にしてね。 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 10:A 11:B 12:C 13:D 14:E 15:F ------ここから16進数は二桁になります 16:10 17:11 18:12 ・・・以下同様。 従って答えは、 12と15(十進数)は、 CF(16進数)が答えです。 尚、単位は、 2進数(B)Bitの略です。 10進数(D)Digitの略です。 16進数(H)Hexdecimalの略です 11001111Bは、CFHが答えです。 アセンブラやC言語をマスターする上でこの2進数&16進数はマスターしておくとビットシフトやデバッグ時のダンプなどで重宝しますよ!!

  • mode
  • ベストアンサー率21% (15/69)
回答No.4

10進数『35』としましょう。 【2進数にする方法】  2で割でどんどん割ります。    35÷2=17 あまり『1』  17÷2= 8 あまり『1』   8÷2= 4 あまり『0』   4÷2= 2 あまり『0』   2÷2= 1 あまり『0』   1÷2= 0 あまり『1』 答え→100011 *答えは下~上に向かって読みます。 【8進数にする方法】  8でどんどん割ります。  35÷8= 4 あまり『3』   4÷8= 0 あまり『4』 答え→43 【16進数にする方法】  16でどんどん割ります。  35÷16= 2 あまり『3』   2÷16= 0 あまり『2』 答え→23 *16進数の場合、あまりが2桁になってしまったら、  アルファベットで『A・B・C・D・E・F』と  表します。      あまり『10』なら『A』    あまり『11』なら『B』    あまり『12』なら『C』         ・         ・         ・    あまり『16』からは数字で表します。    『10・11・12・…………』    あまり『16』なら『10』    あまり『17』なら『11』    あまり『18』なら『12』         ・         ・         ・         ・  

meronpan
質問者

補足

詳しい解説有難うございます。 ただ、16進法がややわかり辛いです。 例えば100なら16進ではどうなるのですか?

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.3

使用する言語はなんなんでしょ? VB及びVBAですと、「参考URL」の拙文がお役に立つかもしれません。 アルゴリズムに関してのご質問でしたら、 1: 10進数の数値を、整数型の変数に格納する。 2: AND演算子を使って、ビットごとに切り分ける(16進数なら、4ビットごと、8進数なら、3ビットごと、2進数なら1ビットごと) 3:切り分けた各部分に対して符号化を行う ってな感じになります。 変換後の値のみが知りたいっていう場合でしたら、Windows付属アプリケーションの「電卓」を使えばいいですね。

参考URL:
http://www.okweb.ne.jp/kotaeru.php3?q=5200
  • bob
  • ベストアンサー率50% (52/103)
回答No.2

ある数 n を x進数に変換する時、 n を x で割った余りが x進数の 1桁目になり、 n を x で割った商を、さらに x で割った余りがx進数の 2桁目になります。 商が0になるまで同様に繰り返せば変換終了です。

  • tk167
  • ベストアンサー率100% (1/1)
回答No.1

私が知っている変換の仕方です。 X・・・変換したい数 B・・・変換したい進法 (1) X÷Bをして商と余りを出す。余りは変換後のB進法の数の最下位になる。 (2) さらに(1)の商に対して同じくBでわり、商と余りを出す。余りは(1)の余りを書いた位の1つ上の位になる。(要するにこの場合は下から2桁目に書く) (3)これをずっと繰り返し、商が0になるまで続ける 具体例 85を8進数に変換 8)85  ~~~~~~ 8)10・・・5 ~~~~~~ 8) 1・・・2 ~~~~~~ 8) 0・・・1 ~~~~~~       ↑ここが答え よって85(10進)=125(8進) どうでしょうか?

関連するQ&A

  • n進法の変換!

    数学が得意で、Excelの達人の方!(じゃなくてもいいんですが……) たとえば、Windowsに載っている、電卓を関数モードで使うと、16進法10進法8進法2進法の変換ができるんですが、ほかには変換できません。 と、言うことで、数字(12桁以上必要)を入れると、ほかの進法に変わるシートを作りたいんですが、ぜんぜんうまくいきません。 誰か、うまいのを教えてください。体裁は気にしません。  ※変換前のn進法のnを、たとえばA2に入力  ※変換後のn'進法のn'を、たとえばA3に入力  ※変換する、n進数を入力 と、こんなシートを作りたいんです。 よろしくお願いいたします。

  • 進法を変えて3で割り切ることはできますか?

    10進法では3の倍数以外を3で割り切ることが出来ません。 この割り切れない数を進法を変えて割り切ることはできるのでしょうか? また何進法なら可能でしょうか?

  • 10進法

    ここに、質問するのがベストかどうかわかりませんが、 世の中では10進法が使われていますが、これは人間の手や足の指が 10本あったからなんでしょうか? それとは別に、 コンピューターは2進法で動いていると聞きました。2進法ということは、大きい数を表すときには桁が10進法であらわすときの5倍必要だとおもいます。 コンピューターにとって、桁が多いのと、10進法や20進法などといったように進法の数を増やすのでは桁を増やすほうが得意なのでしょうか? うまく説明できませんが、教えてください。

  • 60進法と10進法

    違いがいまいち分かりません。 時間は60進法だと言いますが、100分など60以上の数でも表せますよね? そもそも、60という数自体、10進法の数字ではないのでしょうか。 それに一日が24時間だというのも気になります。 時間が60進法なら60時間で一日にならないのでしょうか。 というか、自分が「進法」という概念をきちんと理解しているのかさえ怪しいです……。 また、3進法や100進法なども存在するのでしょうか。 存在するなら、どのような場合に使われるのでしょう。 時間以外に60進法を使う場面があればそれも知りたいです。 数学から離れて久しいド文系ですので、易しい解答を宜しくお願い致します。

  • 生活の数を10進法以外に作ったらどうか?特に値段のつけ方について

    数学で勉強して無駄だったと思われることに、「進法」がありました。2進法の10110とかの類です。2進法はコンピュータ概念でいいとして、他の進法は使い道がありません。 そこで身の回りの生活で出てる苦数は、みな10進法ばかりです。これを多国籍語ならぬ多進法数を導入したらどうでしょうか。 例えば6進法などが結構つかえるのではないか。 そうすると1980円なんていういかがわしい値段が、3300円ということになります。これだと、だまされたりいたずらに購買意欲をかきたてられたりしなくてすみますよね。 全くメリット無いでしょうか。貨幣は今のままで間に合います。

  • 12進法と60進法の数値は

    アナログ時計だと12進法で ↓  ↓  ↓です。 1 2 3 4 5 6 7 8 9 10 11 12 Q1:進法の考え方からすると 10~12は1ケタで表現すべきではないですか?   16進法だと    0 1 2 3 4 5 6 7 8 9 A B C D E F   と1ケタで表現出来てます。 Q2:宇宙人(3000年前かなぁ!)が使用していた60進数は1ケタで60種類の数値を表現していたん    ですか?    数値の種類もわかりますか?

  • n進法への変形の仕方についての質問です

    10進法で63とあらわされる数を他の進法で表すと (1)63=1・2^5+1・2^4+1・2^3+1・2^1+1と変形できるので2進法では111111 (2)63=2・5^2+2・5^1+3と変形できるので5進法では223 …とありますが、この途中の式はどのようにしてこの形にするのでしょうか? 途中式への変形の仕方がわかりません どなたかお願いします…

  • 2進法、10進法について

    10進法を2進法に変換する時に小数点のつく数の場合はどのようにしたらよいのでしょうか?例えば(12.5)10みたいな場合です。

  • n進法→m進法への変換

    やりなおしのSPI問題に頭を痛めています。10進法→n進法、n進法→10進法、というやり方はそれぞれ理解できますが、以下のような応用になると、うまくできません。どなたか、宜しくお願いします! 例題1 3進法で3桁の数は何個あるか。 (書き出していくとわかるのですが、それ以外に何か公式のようなもので求める方法がありますでしょうか。他の進数になるとたちまち困ります。) 例題2 3進法の112201は5進法でいくらか。 (いったん10進法に直さずに、n進法→m進法への変換をダイレクトに行なえ、効率的でわかりやすい方法はありますでしょうか。)

  • ○進法は何種類あるのでしょうか?

    2進法とか10進法とか60進法などは聞いたことがありますが ○進法は何種類あるのでしょうか?

専門家に質問してみよう