
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
私が解く時は、手の指に1本ずつ数字を割り振って計算してしまいますが…
(1、2、4、8…と割り振っていくと、10本の指で10ビット分の計算ができます。ちなみに2の10乗は1024、言い換えると10ビット分で1kなので、桁数が増えても単位をM(メガ)、G(ギガ)と切り替えるだけで、値の概算程度なら結構楽にできます)
というのは置いておいて。
2進数の4桁(4ビット)分が、16進数の1文字分(0x0~0xF)、10進数の0~15
というのを意識すると計算しやすいと思います。
(なので、この問題も2進数は4桁ずつスペースを空けてありますよね?)
この区切りを超えた場合は、1つの区切りで表現可能な最大の値+1(2進数の4桁分なら、10進数の16)をかけて行きます。
小数点から下は、1/(最小桁で表せる数字)、2進数なら1/2…という感じなので、10進数に変換する場合は、地道に各桁の数字を計算していくか、ある程度の桁数(4桁とか)を小数点以上の数字として計算した後、まとめてその桁数分の割り算をしてしまいます(シフト演算みたいなものですね)。
今回は、2進数から16進数なので、計算はもっと楽で、2進数を4桁ずつ区切れるように0を書き加えてあげれば、ほぼ完成です。
桁数が増えてもやる事は変わらないので、桁数が少なめのものを。
※32bit演算と仮定して、マイナスの値(表現可能な最上位桁が1)ではないものとしています
小数点以下は、(特に10進数に変換する場合) 桁を間違えやすいので要注意。
2進数から16進数に変換する問題の(2)
(110.01)2
(0110.0100)2 と書き換えて、
(0110)2 = (4 + 2)10 = (6)16、
(0100)2 = (4)10 = (4)16、
まとめると、(110.01)2 = (6.4)16 になります。
16進数から10進数に変換する問題の(2)
(D.C)16
(D)16 = (13)10 ※
(C)16 = (12)10 = (8 + 4)10 = (1100)2
(C)16は、小数点以下1桁目なので、1/16をかけて、(12/16)10 = (0.75)10
もしくは
ビット単位(2進数)に分解して、
(0.1)2 = (1/2)10
(0.01)2 = (1/4)10
(0.11)2 = (1/2)10 + (1/4)10 = (0.5)10 + (0.25)10 = (0.75)10
まとめると、(D.C)16 = (13.75)10
補足:※の所は、16進数から2進数への変換といった問題では、
16進数の1桁分 = 2進数の4桁分 = 10進数で1、2、4、8 の大きい方から順に、
計算対象の数字を超えていなければ使うという感じで処理して行きます。
(13 >= 8) なので 8
(13 - 8) = 5
(5 >= 4) なので 4
(5 - 4) = 1
(1 >= 2) ではないので、2はスキップ
(1 >= 1) なので1
まとめると、(13)10 = (8 + 4 + 1)10 = (1101)2
桁数が多い場合
2進数から16進数に変換する問題の(4)
2進数が4桁ごとに切ってあるので、16進数で1文字ずつ書き換えて行くだけです。
(101 1010.1111)2
(101)2 = (4 + 1)10 = (5)10 = (5)16
(1010)2 = (8 + 2)10 = (10)10 = (A)16
(1111)2 = (F)16
まとめると、(101 1010.1111)2 = (5A.F)16
16進数から10進数に変換する問題の(1)
(50.8)16
(5)16 = (5)10
これを16倍して、(80)10
(0)16 = (0)10
これを1倍して、(0)10
(8)16 = (8)10
これを1/16倍して、(8/16)10 = (0.5)10
まとめると、(50.8)16 = (80.5)10
実際は、16進数の2文字ずつ (0x00~0xFF)、10進数の0~255 、言い換えると1バイトを1つの単位として (もしくは32ビット分 = 4バイトをまとめて) 扱うことがほとんどなので、あくまで試験問題用かな…という感じもしますが、そのうちきっと慣れます。
検算は、オンラインの計算ツールなどで。
https://note.cman.jp/convert/bit/
桁数合わせの欄の設定を忘れずに。(10進数でマイナスの値になった場合などは、大抵忘れてます)
もしくは、桁数は自動で、符号なしに設定しましょう。(今回の問題の場合)
一応結果は確認しましたが・・・計算間違いやtypo等ありませんように。
No.3
- 回答日時:
たとえば「2進数:abcdefghjklm」は
a * 2^11 + b * 2^10 + c * 2^9 + d * 2^8 + e * 2^7 + f * 2^6 + g * 2^5 + h * 2^4 + j * 2^3 + k * 2^2 + L * 2^1 + m * 2^0
だということが分かりますか?
小数点以下は 2^(-1), 2^(-2), 2^(-3), ・・・ と続きます。
使い慣れた「10進数」であれば、「2^〇」の部分が「10^〇」になります。それが「N進数」の意味です。(「N^〇」になるということ)
では、これを「16進数」に変換すれば
(a * 2^3 + b * 2^2 + c * 2^1 + d * 2^0) * 2^8 + (e * 2^3 + f * 2^2 + g * 2^1 + h * 2^0) * 2^4 + (j * 2^3 + k * 2^2 + L * 2^1 + m * 2^0) * 2^0
= (a * 2^3 + b * 2^2 + c * 2^1 + d * 2^0) * 16^2 + (e * 2^3 + f * 2^2 + g * 2^1 + h * 2^0) * 16^1 + (j * 2^3 + k * 2^2 + L * 2^1 + m * 2^0) * 16^0
と単純に変換できることが分かりますか?
「16進数:ABC」とすれば
A = a * 2^3 + b * 2^2 + c * 2^1 + d * 2^0
B = e * 2^3 + f * 2^2 + g * 2^1 + h * 2^0
C = j * 2^3 + k * 2^2 + L * 2^1 + m * 2^0
ということです。
つまり、「2進数」を、小数点位置から上および下に「4桁ずつ」区切って、その「4桁の2進数」を「1桁の16進数」に置き換えていけばよいのです。
これは「16 = 2^4」という関係にあるからできる話で、そうでない一般の場合にはいちいち各桁の数値を計算していく必要があります。
3. 上を使えば、16進数の「1桁」を [aaaa](a は2進数の0か1)で表して
(1)
(1100.0011)(2) = [1100](16).[0011](16) = (C.3)(16)
(2)
(110.01)(2) = [0110](16).[0100](16) = (6.8)(16)
(3)
(1 1101.11)(2) = [0001][1101](16).[1100](16) = (1D.C)(16)
(4)
(101 1010.1111)(2) = [0101][1010](16).[1111](16) = (5A.F)(16)
(5)
(1010 1100.111)(2) = [1010][1100](16).[1110](16) = (AC.E)(16)
4(1)
「10進数」に変換するには、16進数を上の定義通りに書き出して、
(50.8)(16) = 5 * 16^1 + 0 * 16^0 + 8 * 16^(-1)
= 5 *16 + 0 + 8 * (1/16)
= 80 + 1/2
= 80.5
です。
(余談)
これを例えば「8進数」にしたいのなら、
A * 8^2 + B * 8^1 + C * 8^0 + D * 8^(-1) + E * 8^(-2) + ・・・
= A * 64 + B * 8 + C + D * (1/8) + E * (1/64) + ・・・
= 80.5
とすれば、
A=1
はすぐに決まります。
そうすると残りは
80.5 - 64 = 16.5
ですから、
B=2
になります。
そうすると残りは
16.5 - 2 * 8 = 0.5
ですから、
C=0
だとわかります。
そうすると、
D=4
でちょうど
4 * (1/8) = 1/2
となって、「10進数の 80.5」がすべて「8進数の数」で表せたことになります。
つまり
(80.5)(10) = (120.4)(8)
ということです。
これは 「16進数」を一度「2進数」に置き換え(上の逆手順です)
(50.8)(16) = [5][0].[8](16) = (0101 0000.1000)(2)
これを 8 = 2^3 進数にするので、小数点位置から3桁ずつで区切って、それぞれを「8進の1桁」とすれば
(0101 0000.1000)(2) = (001 010 000.100 000))2
= [001][010][000].[100](2)
= (120.4)(16)
と簡単に変換できます。
「2進数」「8進数」「16進数」(あまり使いませんが「4進数」も)は、このように簡単に変換できます。
(2)同様に
(D.C)(16) = D * 16^0 + C * 16^(-1) = 13 * 1 + 12 * (1/16)
= 13 + 3/4
= 13.75
No.2
- 回答日時:
3の(1)と4の(1)を回答します。
なお、2進数を&B()、16進数を&H()と表記します。
3の(1):
2進数→10進数変換
&B(1100.0011)→
1×2^3 + 1×2^2 + 0×2^1 + 0×2^0 + 0×2^(-1) + 0×2^(-2) + 1×2^(-3) + 0×2^(-4)
=8+4+(1/8)+(1/16)
=12+(3/16)
10進数→16進数変換
12→&H(C)
3/16=3×16^(-1)→&H(0.3)
よって、&B(1100.0011)→&H(C.3)
4の(1):
16進数→10進数変換
&H(50.8)→
5×16^1 + 0×16^0 + 8×16^(-1)
=80+(8/16)
=80.5
よって、&H(50.8)→80.5
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 情報処理技術者・Microsoft認定資格 J検【令和3年度後期 情報システム試験 システムデザインスキル】問題1(2)の解き方を教えてください 1 2022/03/22 18:36
- 数学 問題の解説と回答をお願いします !! 2つの集合A={1,2,3,4,6,8,9,10}とB={2, 1 2022/04/27 23:19
- 数学 数学の問題で法線ベクトルについて 5 2022/11/13 12:45
- 情報処理技術者・Microsoft認定資格 2進数の問題を教えてください。 1 2022/07/27 09:42
- その他(教育・科学・学問) 高校受験について 1 2022/10/29 11:03
- 数学 共通テスト数学1A 相関係数の問題の解き方 4 2022/12/15 17:01
- 数学 中3多項式置き換えによる展開と、因数分解について ①(x+y-2)^2 ②(x-y+5)(x-y-5 2 2022/04/21 00:00
- 数学 数学の問題を教えて下さい。 画像は自分が解いた方法なのですが、何か間違えていますか?答えが同じになら 9 2023/05/14 22:05
- 中学校 数学の負の数の計算です。 6 2022/08/03 11:11
- 情報処理技術者・Microsoft認定資格 応用情報技術者試験の午後問題の過去問の解説 1 2023/01/31 16:32
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
50以下は“50”も入るのですか?
-
16進小数0.Cを10進数小数に変換...
-
5進法を10進法への直し方
-
HEX2BIN関数の使い方。
-
Excel 16進数
-
8進数から16進数 16進数から8進数
-
マイナスの進数変換
-
偏微分の記号をタイプするため...
-
算数計算 大至急お願いします
-
「じじょう」が正しい読み方?
-
対数変換する意味?
-
EXCELで10進数表記をB...
-
123と-123を
-
n進数→m進数
-
座標変換について (テンソル...
-
Excelにて、時間(8:30等)を数...
-
フーリエ変換・逆変換の虚数成...
-
行列の逆変換の定義
-
ヤコビアンが0になってしまう場...
-
フーリエ変換、逆変換の「2π」の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
50以下は“50”も入るのですか?
-
5進法を10進法への直し方
-
16進小数0.Cを10進数小数に変換...
-
HEX2BIN関数の使い方。
-
Excel 16進数
-
偏微分の記号をタイプするため...
-
EXCELで10進数表記をB...
-
dBm/HzからdBm/MHzへの単位変換
-
dBm→dBμV/mの換算について
-
小学4年生の算数(小数)の問題で...
-
算数計算 大至急お願いします
-
1.6dLは、何L何dLですか? 問題...
-
=(イコール)の上下に点々があ...
-
「じじょう」が正しい読み方?
-
Excelにて、時間(8:30等)を数...
-
ACアダプターの消費電力の件
-
平行の記号
-
デシベルから加速度の変換について
-
8進数55はどうやって2進数に変...
-
ヤコビアンが0になってしまう場...
おすすめ情報