プロが教えるわが家の防犯対策術!

10進数である「49333」を16進数に変換するときの式は、
49333より小さい16^3(4096)で除算します。
49333/4096=12 余181
余りである181に、先ほどのように16^3より小さい16^2で除算します。
181/256=0 余181
181/16=11 余5
5/1=5 余0
今まで除算して算出した商は、12、0、11、5なので49333の16進数は、C0B5となります。

次に10進数である「12」を2進数に変換するときの式は、
12/2=6 余0
6/2=3 余0
3/2=1 余1
12の2進数は、1100となります。

ここで質問が二つあります。


16進数は、2進数と違い除算で生まれた余をn^mで割っています。
なぜ16進数は余を割っているのに、2進数は商を2で割っているのでしょうか。

②C0B5の0の部分を算出する際の式である181/256についてなのですが、小数第何位まで計算してよいのなら当たり前ですが計算できます。
しかし、今回のように10進数を求めるときは、小数点以下の計算はいらないので0になり、余は181になります。
このように小数点以下を計算しない181/256は、どのようにして筆算で記述するのでしょうか。

※ずれていたら申し訳ありません。
   __0
181ノ256

小数点以下を計算しない時は、これ以降書きようがない気がするのですが、これで余が181あることは伝わりますか。

A 回答 (3件)

16進と2進の違いではなく、やり方(アルゴリズム)の違いです。



では10進法を例にして。

方法1)
4305
を 4305より小さいうちもっとも大きな 10^mである 1000 で割ります
「4」 余り 305
 → 余りの305 を 100で割ります
「3」 余り 05
 → 余りの05 を 10で割ります
「0」余り 5
 → 余りの5 を 1で割ります
「5」 余り0

最初から「」を拾うと「4305」


方法2)
4305
を 10 で割ります
430 余り 「5」
 → 商の430 を 10で割ります
43 余り 「0」
 → 商の43 を 10で割ります
4 余り 「3」
 → 商の4 を 10で割ります
0 余り 「4」

最後から「」を拾うと「4305」


その16進の方法は 「方法1」を、2進の方法は「方法2」を使ったものです。
やり方が違います。
16進を方法2でやることも、2進を方法1でやることもできます。

49333 ÷ 16 = 3083 余り 「5」
3083 ÷ 16 = 192 余り 「11」
192 ÷ 16 = 12 余り「 0」
12 ÷ 16 = 0 余り「 12」
→ 12,0,11,5
→ C0B5

12 ÷ 2^3 = 「1」 余り 4
4 ÷ 2^2 = 「1」 余り 0
0 ÷ 2^1 = 「0」 余り 0
0 ÷ 2^0 = 「0」 余り 0
→ 1100


(2) 181 / 256 を筆算で書くなら
   __0
256ノ181←ここが逆
    0 → 256 × 0
  -----
   181→余り
でしょう
    • good
    • 1

① 2⁴=16



②数と表現方法は別物
C0B5 = 5 + ( 16( 11 + 16( 0 + 16(12) ) ) ) 。
この式で全てが一望に見えると思うケド?

これを16で割ると余り5。
その商を16で割ると余り11 (=B)。
その商を16で割ると余り0 (=0)。
その商を16で割ると余り12 (=C)。
    • good
    • 1

出来上がった16進数と2進数をよく見てみよう



C0B5 <-便宜的に10進数で表記すると 12、0、11、5
貴方の計算式で、最初に12を求め最終的に5が確定しました
詰まり上位桁から求めている

1100 こちらの方は0と1しかないので分かり難いが
貴方の計算式では、下位側の桁から求めています

求める方法が異なるので、商を用いるか剰余を用いるか異なります

二進数の方も16進と同様に
2^3、2^2、2^1、2^0を使えば同じになりませんか?
    • good
    • 2

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!