- ベストアンサー
16進数から10進数への変換
16進数の77が16×14+7だということはわかるのですが、少し複雑になるとわからなくなります。 例えば以下のような場合です。 「16進数で5D2Cは 16の三乗×5+16の二乗×13+16×2+12 とあらわされます。」 なぜ、16の三乗や、16の二乗をする必要があるのでしょうか? 5桁になるとおそらく16の4乗をする必要がありそうですが、 宜しくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (4)
- neue_reich
- ベストアンサー率21% (138/647)
- k2_kazu
- ベストアンサー率50% (9/18)
- meikai
- ベストアンサー率25% (23/92)
- HUTABA
- ベストアンサー率27% (436/1611)
関連するQ&A
- 8進数、16進数→10進数基数変換の解き方
8進、16進を10進に直す基数変換を解いているのですが、いまいちあっているのかわかりません。 答え合わせをお願いします。 36.4(8進数) 3×8(1乗)+6×8(0乗)+4×8(マイナス1乗)=30.5 2D.C(16進数) 2×16(1乗)+D×16(0乗)+C×16(マイナス1乗)=45.75 ●×■(マイナス1乗)は、■(1乗)分の●で計算 検索した方法ではよくわからず、習った方法は忘れてしまいました・・・ わかりにくい表現方法で失礼します、よろしくお願いします。
- ベストアンサー
- 数学・算数
- 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; }
- 締切済み
- C・C++・C#
- 2進数&10進数&16進数の変換
◆ コンピュータで使用される2進数 人が日常使用している数値は10進数ですが、コンピュータは内部で数値を表現する場合、2進数を使用 しています。しかし、「0」と「1」だけの2進数では人が分かりにくいため、人間が見えるところでは コンピュータは2進数を10進数や16進数が変換して表現しています。ここではその変換方法を学びます。 ◆ 2進数 2進数とは、「0」と「1」の2種類の数字を用いて全ての数を表現します。10進数では0から数えて「9」の 次は位があがることになりますが、2進数では「 1 」の次に位があります。位があがれば、その新しい桁は 「 1 」 となり、それ以下の桁は全て 「 0 」 となります。それでは、2進数の数の増え方を見てみましょう。 ところで、2進数を表現する時は一般的に8桁単位で表現するため、8桁未満の場合は頭に0をつけます。 つまり、上の2進数の値は順番に 00000000 → 00000001 → 00000010 → 00000011 → 00000100 → 00000101 → 00000110 → 00000111 → 00001000 と表します。以下は2進数と10進数の対応表です。 2進数と10進数の対応表 10進数 0 1 2 3 4 5 6 7 8 9 10 ・・・ 2進数 0 1 10 11 100 101 110 111 1000 1001 1010 ・・・ ◆ 2進数から10進数への変換方法 10進数と2進数の対応表は以下の通りです。2進数の桁が上がる時の10進数の値が以下となります。 2進数と10進数の対応表2 10進数 1 2 4 8 16 32 64 128 2進数 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000 従って、2進数で「1」となっている桁に対応する上記の10進数の基準値を合計することにより、2進数から 10進数の値を求めることができます。例えば、2進数の「 00101010 」を10進数に変換する場合、基準値が 32、8、2の所でビットが1なので下図の通り、2進数の「 00101010 」は10進数では「42」だと分かります。 ◆ 10進数から2進数への変換方法 10進数の数値を「 0 」になるまで「 2 」で割り算していき、その結果の「余りの数 」を並べることで ある10進数の値を2進数の値へ変換することができます。それでは、具体的に変換して見て行きましょう。 例えば、10進数の「160」を2で割り算していくと上図の結果となります。後は、余りの数を下から順番に 並べれば 「 10100000 」 の値が算出されます。次に、「22」を2で割り算していき余りの数を下から順に 並べれば 「 10110 」 の値が算出されます。ネットワークにおいては、2進数を一般的に8桁で表示する ことから、8桁になるよう上位に「 0 」を追加して「 00010110 」とします。当然「 10110 」と同じ値。 因みにここ参照ですがhttp://www.infraexpert.com/study/ip1.html なぜこれが10進数なんでょうか? 10進数というのは、0から9までの数字が1増えて10になるんですよね? なのに2進数と10進数の対応表2を見ると 倍数になっているのですが、、 これはいったいどういう違いなんでしょうか? 回答お願いいたします。 ほかにも解らなそうな点は、教えて頂けると幸いです。
- ベストアンサー
- その他([技術者向] コンピューター)
- 2進数を36進数に変換する
2進数を36進数に変換する際、2進数の何桁ごとに区切ればよいのでしょうか? 16進の場合は、4ケタごとに区切ってやるような感じです。
- ベストアンサー
- その他([技術者向] コンピューター)
- 8桁の2進数を10進数に変換する方法を教えてください。
キーボードから2進数を入力した値を10進数に変換し、変換結果を出力する方法が解りません。作成するにあたり仕様があり、私一人では解決できないので相談させていただきました。 <仕様は以下の通りです> (1)このプログラム(8桁の2進数を10進数に変換)をする際は、最後に出力する時(printf)以外は関数を使ってはいけません。 (2)キーボードから2進数を入力させる。 (3)空白(ブランク)が入力されても変換可能にする。 (4)入力された2進数は8桁にし、8桁以上の場合はエラーを出す。 (5)2進数の「0」と「1」以外の文字が入力された場合はエラーを出す。 (6)バイナリ変換をし、変換結果を出力する。 以上になります。 まだ、C言語を勉強を習い始めの初心者です。どうか、ご回答のほど宜しくお願いします。
- 締切済み
- C・C++・C#
- 10進数から8けたの2進数に変換
10進数から2進数への変換はわかるのですが 10進数から8桁の2進数への変換がわかりません。 仮に10進数の38を8桁の2進数に直す場合、どんな過程を経て、8桁の2進数になるのでしょうか。 どなたか教えていただけますと有難いです。 宜しくおねがいします。
- 締切済み
- その他([技術者向] コンピューター)
- 16進数を10進数に変換について
16進数を10進数に変換について 今、情報処理の勉強をしていますが、 16進数を10進数への変換にてつまずいています。。。 以下、ご存じの方 お教えください。 16進数:ABCDを10進数に変換する方法が全くわかりません。 参考書をみても 理解ができない方法でした。 参考書の記載は以下でした。 --------------------------------------------------- 重| 16^3 16^2 16^1 16^0 み| 2^12 2^8 2^4 2^0 | 4096 256 16 1 --------------------------------------------------- 16進数| A B C D 10*4096+11*256+12*16+13 =40690+2560+256+160+32+13 =43520+416 =43981 なぜ、16進数のAが2^12なのでしょうか? 分かりにくくすみません。。。 ご教授頂きたくよろしくお願いいたします。
- ベストアンサー
- その他(学問・教育)
- ○進数の計算
直接VisualBasicとは関係ないですが、VBAのプロジェクトで ○進数の考え方で、英字を数値へ 数値を英字へ変換しているのですがどうしても理解できない事があります。 A B C AA AB AC BA ・ ・ ・ 上記のような法則があるとします。 A-Cを数字に置き換えます。 A -> 0 B -> 1 C -> 2 文字→数値の計算式は 1桁目 A-Cの数値×3回毎に繰り上がるので3×1桁目は0乗 2桁目 A-Cの数値×3回毎に繰り上がるので3×2桁目は1乗 Aを数字に置き換えると 1桁目 Aは、0*3の0乗=0です。 期待通りです。 AAを数字に置き換えると 1桁目 Aは、0*3の0乗=0です。 2桁目 Aは、0*3の1乗=0です。 0 + 0 = 0 期待している値は3です。 BCを置き換えると 1桁目 Cは、2*3の0乗=2 2桁目 Bは、1*3の1乗=3 2 + 3 = 4 期待している値は8です。 3を文字に置き換えると 数字÷3回毎に繰り上がるので3 = 商 ・・・余り 余りで、文字列を引いてきます。 3÷3=1 ・・・0 -> A 2桁目は、1回目の商÷3 1÷3=切捨てで0 ・・・1 - > B B + A = BA 期待値はAAです。 これらは、1つずれて期待している値とは違う値が返ってきていると思うのですが、考え方で理解することができません。 どうしてこのようなことになるのでしょうか? 頭が混乱して考えても分かりません。よろしくお願いします。
- ベストアンサー
- Visual Basic
- ぷららのメール受信には常に10分程度の遅延がありますが、送信は問題ありません。
- Gmailではメールの受信時間に遅延はなく、送信と同時に受信できます。
- お使いの環境はWindows10で、接続は有線LANです。
お礼
回答ありがとうございます。 16進数から2進数への変換というのは、 非常に簡単なんですね! >2のN乗の方が計算が楽だと思いますので、10進数にする場合は 使ってみてはいかがでしょうか? と、回答してくださいましたが、 すみません、今ひとつピンとこないのです。。 つまり、16進数から10進数に直すときは、 一度2進数にしてから10進数にするほうが計算が楽という意味でしょうか。 コンピュータの勉強中にぶつかった壁ですが、 さらに知識を深めたいと思っております。