• 締切済み
  • 暇なときにでも

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

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

共感・応援の気持ちを伝えよう!

  • 回答数6
  • 閲覧数944
  • ありがとう数6

みんなの回答

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

言語はなんでしょうか。 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を使っていなければ何の意味もありませんね。 共用体とビットフィールドが大好きな、はぽるんでした。

共感・感謝の気持ちを伝えよう!

関連するQ&A

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

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

  • 2進法などのxについて

    はじめまして。 プログラミングではないのですが、 会社から2進法・10進法・16進法の計算を 覚えろということで今勉強しております。 プログラミングをするわけでは無いため 何言語やソフトなどかはわからず、 こちらのジャンルへの書き込みをさせて いただいてしまいました。 2進法・10進法・16進法の変換の仕方などは サイトを回り理解したのですが 会社から渡されたプリントの問題の中に 『0x56を2進法で表記した場合・・・』という 問題があり、この中の『x』(エックス?)とは 何なのかがどうしてもわからずこちらで 質問させていただきました。 是非教えていただけると助かります。 よろしくお願いいたします。

  • 2進法・10進法・16進法

    FF0000(16),0000FF(16),008000(16) これを2進法と10進法に変換するやり方を教えてください。

  • 回答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進数はマスターしておくとビットシフトやデバッグ時のダンプなどで重宝しますよ!!

共感・感謝の気持ちを伝えよう!

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

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』         ・         ・         ・         ・  

共感・感謝の気持ちを伝えよう!

質問者からの補足

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

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

使用する言語はなんなんでしょ? 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

共感・感謝の気持ちを伝えよう!

  • 回答No.2
  • bob
  • ベストアンサー率50% (52/103)

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

共感・感謝の気持ちを伝えよう!

  • 回答No.1
  • tk167
  • ベストアンサー率100% (1/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

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

    10進法で表された数字を2進法に変換する場合、2で割って余りを並べるというの方法が一般的に知られていますが、何故そうなっているんでしょうか?これを数学的に理由を述べられる方はいらっしゃいませんか?ネットを使って調べてみても満足のいく答えが見つかりません。もし知っている方がいましたら、教えて下さい。宜しくお願いします。 以下のサイトから、「重み」というものを使って、10進法でこうだから、2進法でもこうなる、という理屈はわかるのですが、どうも釈然としません。 宜しくお願いします。 http://itpro.nikkeibp.co.jp/members/ITPro/ITBASIC/20020617/1/

  • 2進法・10進法・16進法の問題がわかりません・・・

    学校で来週テストがあるのですが、16進法から10進法への変換がさっぱりわかりません。自分なりに解いてみましたが全く自身がありません。考え方を教えてください(>_<) 16進A4から10進法・2進法への変換です。 よろしくお願いします(>_<)

  • 2進法や3進法について

    はじめまして。今日、情報Aで2進法や3進法のついて習い、練習問題のプリントをもらいました。そのプリントには答えもついているのですが、何度やっても書いてある答えと合いません。もしかしてとは思いますが、先生が間違えているという可能性もあると思い、みなさんにも解いていただけないでしょうか?解けたら、答えがあっているかどうか、変換のポイントなどを書いていただけるとうれしいです。 問)3進法で書かれた数を2進法に直せ 1)22211       答え 100111111 3)201211      答え  100001011 ちなみに私の答えは1)が11101110、3)が100010111となりました。また、2)もあったのですがこれは正解でした。 

  • 2進法や16進法

    10進法を2進法に変えたり16進法に変える方法がよくわかりません。分かりやすい解説がしてあるサイトを教えてもらえないでしょうか。

  • 10進法を2進法に変換する関数を教えてください。

    10進法 2進法 1     1 2     10 3     11 4 5 6 という表を作るときに 「10進法の3は2進法の11」と変換するエクセル関数はありますか? vbaで自作関数を作るしかないですか?

  • 2進法と10進法

    2進法と10進法っていうのが良く分かりません。 たとえば 2進法の8桁の数字、 <00000101>を 10進法に直すと5、 <11111111>なら 255、 <01111111>なら 127、って?? べたべたの文系にも分かるように教えてください。よろしくお願いします!

  • 10進法から2進法へ。

    こんにちは^^)今レポートをやっています。 2進法を10進法に直すやり方は、自分なりに理解できました。 ですが、10進法を2進法に直すとき、なぜ2で割り余りを明記していくのか、その理由がわかりません。しかも以下問題文の答えは、(101100)だと思うのですが、他の位は全て余りを明記してるのに、この数の一番大きい位の1だけは、3÷2=1あまり1の商を明記してるんですよね?なぜでしょうか? (問題) (108)10を2進法になおせ。 この問題で、わかりやすく説明していただけないでしょうか? よろしくお願いします。質問は、以下の2点です。 (1)10進法から2進法になおすとき、なぜ2で割りあまりを明記するのか? (2)なぜ、あまりだけを明記するのではなく商も明記するの??

  • 2進法と16進法

    僕は高校1年生です。 学校の情報の時間で、アナログとデジタルの2進法と16進法について10分間の発表をすることになりました。 どういったことを発表するのがベストなのでしょうか? 一応2進法と10進法と16進法の対応表のことは発表しようと思っているのですが、他に思いつきません・・・

  • 2進法

    1次の問いに答えなさい (1)2進法の10010を16進法で表しなさい。 (2)2進法で101+1011を計算しなさい。 (3)1Bは2進法で何ビット必要になるか。 (5)800×600の解像度のディスプレイには画素がいくつあるか。 (6)1MBは1KBの何倍か。 2次の数値を指定された数式で表現しなさい (1)(11100101)2→10進数 (2)10進数の13を2進数で表すと 3横800ピクセル、縦600ピクセルのモノクロ画像のデータ量をバイト単位で答えなさい それぞれ解き方と答えを教えてください、よろしくお願いします。

  • 2進法について

    0以上の整数nについて、 nが偶数のときf(n)=f(n/2) nが奇数のときf(n)=f{(n-1)/2}+1 このときf(n)はnを2進法で表したときの1の個数になると思うのですが、証明する方法がわかりません。 帰納法などで証明できないでしょうか

専門家に質問してみよう