10進数を16進数に変換する時なぜ16で割るのですか?

数学 | C言語関連988閲覧

ベストアンサー

2

2人がナイス!しています

その他の回答(4件)

3

BAは既に決まっているようであくまでも蛇足ですが... 数学では~進数というのはまったく別のことを意味するので... 10進法表記、16進法表記と呼んだほうが良いと思います。 別に16で割らなくても、効率を多少無視すれば 4で割って余りを求めていく方法もあります。 (むしろこちらのほうが覚えやすい?) たとえば10進法表記の12345を16進法表記であらわすのは 4で割った余りを求めて1、1を引いた数を4で割って3086 4で割った余りを求めて2、2を引いた数を4で割って771 4で割った余りを求めて3, 3を引いた数を4で割って192 4で割った余りを求めて0, 0を引いた数を4で割って48 4で割った余りを求めて0, 0を引いた数を4で割って12 4で割った余りを求めて0, 0を引いた数を4で割って3 4で割った余りを求めて3, 3を引いた数を4で割って0 中の数字を逆順に書いて3000321(4)ということになります。 そして下から2桁ずつ区切って対応表を使います。 03|00|03|21 対応表 4進|16進 00 |0 01 |1 02 |2 03 |3 10 |4 11 |5 12 |6 13 |7 20 |8 21 |9 22 |A 23 |B 30 |C 31 |D 32 |E 33 |F 最終的に 12345=3039(16)

3人がナイス!しています

1

16進数だからが正解です。 10進数は1,2,3,…9ときて10と一桁あがりますが、それが…9,A,B,C,D,E,Fときて値が10進数の16になる時10となります。 なぜ16進数を使うかといえばコンピュータ内は2進数で1と0しか無いですがこれを4ビットくくりにした時16進数で表す事が出来るからです。

1人がナイス!しています

2

ある数Nが16進数でXYZ(16)と表されるとき N=X×16^2 + Y×16 + Z と基数法に依らずに表せます。 この式は N=(X×16+Y)×16 + Z と表されて、これはNを"16で割った余りがZになる"ということを表しています。このためNを16で割っていって余りを求めると16進数表記を求めることができます。

2人がナイス!しています

1

16進数だから たとえば、12345という10進数を10進数に変換するとき(全然返還になってないけど) 12345÷10 商1234、余り5 1234÷10 商123、余り4 123÷10 商12、余り3 12÷10 商1、余り2 1÷10 商0、余り1 よって、変換結果は、12345 これと同じことを16でやってるだけ。 これ、理解できますか?

1人がナイス!しています