• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:2進数&10進数&16進数の変換)

2進数、10進数、16進数の変換方法とは?

SoltyRevantの回答

  • ベストアンサー
回答No.7

No2, No5です。 申し訳ございません。 「9641」はただの例としてあげた数字でした。 割った値の余りを下から読み上げる手法は、 10進数の数字を、n進数に変換する際に使われます。 以下は例といたしまして、 10進数の数字「7564」をn進数に変換することを考えて見ます。 変換する場合、基数[n]で割ることによる余りを読み上げていく形となりますので、 以下のような計算手順が出来上がります。 ==================== 「n = 2」 ★10進数 -> 2進数 7564 / 2 = 3782 ... 0 3782 / 2 = 1891 ... 0 1891 / 2 = 945 ... 1 945 / 2 = 472 ... 1 472 / 2 = 236 ... 0 236 / 2 = 118 ... 0 118 / 2 = 59 ... 0 59 / 2 = 29 ... 1 29 / 2 = 14 ... 1 14 / 2 = 7 ... 0 7 / 2 = 3 ... 1 3 / 2 = 1 ... 1 1 / 2 = 0 ... 1 下から読み上げると、 1110110001100(2) = 7564(10) となります。 ==================== 「n = 8」 ★10進数 -> 8進数 7564 / 8 = 945 ... 4 945 / 8 = 118 ... 1 118 / 8 = 14 ... 6 14 / 8 = 1 ... 6 1 / 8 = 0 ... 1 下から読み上げると、 16614(8) = 7564(10) となります。 なぜこのような計算で結果がでるのか? 不思議ですよね。 ならば、上記要領で、 「n = 10」で、10進数の整数を10進数に変換してみましょう。 ==================== 「n = 10」 ★10進数 -> 10進数 7564 / 10 = 756 ... 4 756 / 10 = 75 ... 6 75 / 10 = 7 ... 5 7 / 10 = 0 ... 7 下から読み上げると、 7564(10) = 7564(10) となります。 ... 数字は基数で割ることで余りは常に、 最下位の桁の数字となることになることに気付きましたでしょうか? 10進数->10進数の変換は、結果としては無意味なことですが、 その数字が導き出される手順は2進数、8進数の変換でも同様のメカニズムとなります。 当たり前といえば当たり前のことですが、 何回も見ていれば、その当たり前に気付けるかと思います。

aiueo6391
質問者

お礼

回答ありがとうございます。 ようやく解りました。

関連するQ&A

  • 2進数の重み対応表について

    度々すみません。ご協力お願いします。 2進数から8進数への変換ですが以下の2進数重み対応表の意味がいまいち分かりません。 問題: 2進数 1100.01の8進数への変換を次の手順で行う。 (1)3桁づつ区切る: (2)2進数の重み: (3)掛けて足す: (4)8進数: 001 100 . 010 ※3桁無い場合は0を補う 421 421 . 421 ←2進数重み対応表 001 400 . 020 ※掛けて足す 回答:14.1 質問: a.少数以下の重み対応表.421の意味が不明です。  (10進法だと、.10^-1, 10^-2・・・は分かりましたが・・) b.同様に2進数から16進数の場合の小数以下.8421も不明です。 簡単な質問かもしれませんが何卒宜しくご教授お願いします。

  • 10進数 → 2進数

    小数点を含んだ実数の、10進数から2進数への変換のやり方がよくわかりません。できるときとできないときがあります。たとえば、 (0.1)_10 = (0.0001100110011・・・)_2 ※(A)_xとは、数値Aのx進数表現というイミです。以下もこの表現を使います。 となるらしいですが、どうやればいいのでしょうか?わかりません。 また、ついでに聞いておきたいことがもう一つあります。小数点を含まない数値の 変換も教えていただきたいです。 たとえば今までぼくは、(101)_10を2進数に変換するのに、 (101)_10 = (100 + 1)_10 = ( 2^2・25 + 1 )_10 = ( 2^2・( 2^3・(2 + 1) + 1 ) +1 )_10 = (2^6 + 2^5 + 2^2 + 2^0 )_10 = (1100101)_2 などという、めんどくさいことをやっていたのですが、もっとスマートなやりかたはないでしょうか? コンピュータもいちいちこんなやり方でやっていたら、計算量多すぎてやってられないような気がするので、きっとあると思うんですけど…簡潔なアルゴリズム…

  • 基数変換の変換につきまして

    現在基本情報技術者の勉強をしています。 10進数から2進数への変換など基数変換がよくわかりません。 10進数の数値を 「 0 」 になるまで 「 2 」 で割り算していき、その結果の「余りの数 」を並べることによりある10進数の値を2進数の値へ変換することができることは分かるのですが、 どういう仕組みでそのようにしたら求められるのかがまだ理解しきれないのです。 とくに少数を変換するときなどはまた戸惑ってしまい、それをまた16進数や8進数などスムーズに変換することができません。 基本的な質問で大変申し訳ないのですがどうかご教授頂ければ幸いです。 どうぞよろしくお願いいたします。

  • 2進数を16進数に変換するにはどうしたらいいのでしょうか?

    たとえば、10110111110という2進数を16進数に変換するには どうしたらできるのでしょうか?よろしくお願いいたします。 (本などで調べたら、下から4桁ずつ区切るとよいとかいてあったのですが よく意味がわかりませんでした。) コンピュータにあまり詳しくないので、どなたか初歩的に優しく教えていただけないでしょうか?

  • 2進数と10進数と16進数の変換について

    私の学校の情報の授業の中で、2進数を16進数にしたり、また、逆をやったり、10進数を交えた、変換のテストが毎回の授業であるのですが、私は納得がいかないのです。 8桁もある2進数の足し算をやらせたり、2進数の引き算、割り算・・・(その他、文章問題など) でも、文句ばかり言っていても始まらないのですが・・・     (履修不足問題で毎回、テストをやることになってしまったらしい) そこで質問です。 私の知っているやり方が、2進数なら、10進数を2でひたすら割っていき、余りを後ろから読む。16進数も同様です。 これが厄介なもので、2進数の4桁までならどうにか10進数に変換できるのですが、8桁ともなると、問題を見た瞬間に冷や汗です。(苦笑) これしか知りません。(16→10 も知りません) しかし、他の効率的なやり方があるという話を聞いたことがあります。 毎回、10進数に直して計算していると、確実に時間がないのです。 他の効率的なやり方をご存知の方、また、そういうサイトをご存知の方いらっしゃいましたら、返答、よろしくお願いします。

  • この10進数は?

    こんばんは。大学1年生です。 コンピュータ関連の授業で、「ある10進数を5進数で表現すると1の位が2桁の数字になり、3進数で表現すると1の位が0となった。この10進数は何か」という問題があり、回答が12(10進数)でした。 12という回答で合っていますか?また、この問題の考え方がはっきりとわからないので、わかる方に教えて頂きたいです。 お手数をおかけしますが宜しくお願い致します。

  • このシンプルな進数の変換はどういう流れで行っているのでしょう?

    このシンプルな進数の変換はどういう流れで行っているのでしょう? (1)06201E90h この16進数の数値が (2)2104976d こうなって、 (3)76491002 こうなることについて、 「PackedBCDに変換して下位から並べる」という説明を受けたんですが、 そのとき上記の数値と説明だけメモして納得したつもりが、後で実際に変換しようとすると訳が分からなくなりました。(2)から(3)へは、並んでいるのを2文字ずつとって逆にしていると分かったのですが、(1)から(2)が・・・。 (2)の末尾にdが付いてるので10進数に変換していると思うのですが、普通に変換したらEが14という2桁の数値になって意味不明になります。 また、PackedBCDは4ビットで1桁の10進数を表すとありましたが、 上記の式をそれに当てはめてどうしようというのでしょうか。(もしかしたら聞き間違えた可能性もあるので、似たような用語がないか調べているところです。) どなたかご教示くださいますでしょうか。

  • 2進数から10進数へ変換

    C言語で、2進数から10進数に変換するプログラムを作ろうと思っています。 手計算で行う場合は2進数の 下1桁目×1 下2桁目×2 下3桁目×4。。。と計算しています。 下○桁目を取り出す方法を考えているのですが、思いつきません。 3桁の2進数を変換するプログラム(とりあえず101を変換することを考えて・・・)を書いてみたのですが、101を考えすぎたためか上手くいきませんでした。 最終的には10進数でintの範囲内程度の2進数の変換ができるプログラムを書きたいと思っています。 アドバイスをお願いします。 ちなみに、考えてみたプログラムは以下の通りです。 101以外で上手く変換できませんね・・・ ここに貼り付けるのが恥ずかしいです。 #include <stdio.h> main() { int x ,i ,z[3]; scanf("%d",&x); z[0]=x/100*4; z[1]=(x/10-10)*2; z[2]=(x-110)*1; printf("%d",z[0]+z[1]+z[2]); return 0; }

  • コンピューターで扱う、2進数について

    コンピューターは0と1しか理解できず、 つまりそれは2進数で、それを4桁に区切って16進に変換して表現することが多いと思います。 今ふと思ったのですが、 何故16進なのでしょうか? 例えば3桁区切りで8進、5桁区切りで32進、 ではいけなかったのでしょうか? 例えばIPアドレスなんかも16進2桁ですよね? 2進の4桁+4桁ですよね。 単純にそう言う風に決めてしまったということなのでしょうか?

  • テキストボックス(###,#)の表示が16進数に変換されてしまう。

    こんにちは。VBA(ACCESS2003)初心者です。 どうぞ、よろしくお願いします。 現在、テキストボックスにカンマ書式(###,#)を設定しているのですが、16桁以上の数値を入れると、16進数に変換されてしまうのです。 これを、変換させずに入力したままの値にするにはどうしたらいいのでしょうか? すみませんが、ご回答を宜しくお願いいたします。