• ベストアンサー

16進数から10進数の計算

代数で16進数の勉強をしているのですが、分からないためどなたか教えて頂けないでしょうか? 問題)16進数演算の結果のうち、他と異なる物が1つある。それはどれか。10進数の10から15は16進数形式ではA~Fで表記するものとする。 (1)2AFDE-1BCDF (2)ABCD+5432 (3)1FEDC-FEDD (1)については、回答がありますが理解出来ません。 2AFDE=2×16^4+10×16^3+15×16^2+13×16+14 -1BCDF=1×16^4+11×16^3+12×16^2+13×16+15     15×16^3+2×16^2+15×16+15=F2FF なぜこの回答になるかも教えて下さい。宜しくお願い致します。

質問者が選んだベストアンサー

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

単純に10進数の筆算と同様に考えてはいかがでしょう。 違いは、10で繰り上がるか16で繰り上がるかだけ。 混乱しないため、まずA~Fを10進数でメモること。 (1)A=10、B=11、C=12、D=13、E=14、F=15 (2) 2AFDE  -1BCDF (3)上記に(1)をあてはめると以下の表現になる。   2 10 15 13 14  -1 11 12 13 15 (4)上記を下1桁から順に計算するのですが、  14-15=-1ではNG。下2桁13から1(=16)を  持ってきて(16+14)-15=15(=F) (5)下二桁目:(4)で13-1しているので、12に繰り下がっている。  12-13⇒下3桁目から1(=16)を持ってきて  (16+12)-13=15(=F) (6)上記を繰り返すと、F2FFとなります。 ■10進数の筆算時に繰り下がり(上がり)の数値を斜め上に  小さく記入して計算した経験があると思います。  その方法と同様です。                   

dsx32498
質問者

お礼

10進数に直さなかったので混乱していました。 右から計算すれば良いのですね、非常に分かりやすかったです。 ありがとうございました。

その他の回答 (6)

  • y_akkie
  • ベストアンサー率31% (53/169)
回答No.6

>2AFDE=2×16^4+10×16^3+15×16^2+13×16+14 >1BCDF=1×16^4+11×16^3+12×16^2+13×16+15   まず、2AFDE-1BCDFの計算についてですが、 (2-1)×16^4 + (10-11)×16^3 + (15-12)×16^2 + (14-15) =1×16^4 + (-1)×16^3 + 3×16^2 + (-1) といった形で計算できますね…。 そして、 1×16^4 + (-1)×16^3 + 3×16^2 + (-1) と(1)×16^4 + (-1)×16^3 + (3)×16^2 + (0)×16 + (-1) 書き改めます。 ここから、()のマイナスになっている部分を何とか0~15の数値の範囲に 収まるようにそれぞれを変形していくわけですが、これは筆算と同じよう要領で変形していくわけですが、必ず右から左に向かって順番にやっていくにしないといけません。これは筆算の最下位の桁から最上位の桁へと計算していきますよね。それと同じ要領になります。 つまり、  △がマイナスの場合は、以下のようにして△の部分を0~15までの範囲 のプラスの値にしてやる事ができます。 ○*16^n + △*16^n-1 = (○-1)*16^n + (△+16)*16^n-1 証明:-15<=△<=-1なので、1<=△+16<=15になります。 また、○*16^n + △*16^n-1 = (○-1)*16^n + (△+16)*16^n-1 に関しては、 右辺を実際に計算してやると ○*16^n - 16^n + △*16^n-1 + 16^n =○*16^n+△*16^n-1 と結局は左辺の式に一致します。 そして、これを踏まえ、実際に式を変形していくと、 (1)×16^4 + (-1)×16^3 + (3)×16^2 + {(0)×16 + (-1)} (1) {}の部分の式の(0)×16 + (-1)を(0-1)×16 + (-1 + 16) すなわち、(-1)×16 + (15)に置き換えます。そうすると、 (1)×16^4 + (-1)×16^3 + (3)×16^2 + (-1)×16 + (15)  (2) になります。これで最下位桁の数が15すなわちFであると決定 されました。 次に、 (1)×16^4 + (-1)×16^3 + {(3)×16^2 + (-1)×16} + (15)  の{}の部分に対しても、(3-1)×16^2 + (-1 +16)×16すなわち、 2×16^2 + 15×16に置き換えてやればよいだけです。 すると以下の(3)式が得られますね…。 (1)×16^4 + (-1)×16^3 + (2)×16^2 + (15)×16 + (15)  (3) これで最下位の次の上位桁の値も15すなわちFになりますね。 そして、よく見ればその次の上位桁も0~15の範囲内に収まって いるので、2であると決定されました。 もうお分かりだと思いますが、最後に、(-1)の部分だけを同じような 要領でプラスにしてあげればよいわけですよね。すると、 (1)×16^4 + (-1)×16^3 = (1-1)×16^4 + (-1+16)×16^3=15×16^3 となりますので、最上位桁の値はFであると決定され、 結局は、15×16^3+2×16^2+15×16+15=F2FFになりましたね…。 以上のやり方について理解していれば16進の筆算も以下のように軽々と できるはずです。10進数の筆算も所詮、以上のような原理を利用してできたアルゴリズムなんでしょうね…。   2AFDE -) 1BCDF --------- 2 (10) (15) (13) (14) -) 1 (11) (12) (13) (15) ------------------------------------- (5)  (4)   (3)   (2)   (1) (1)=(14+16)-15= 30-15=15   (2)=(13-1)-13 = 12-13     ->(12+16)-13 = 15 ->F (3)=(15-1)-12 = 14-12 = 2 ->2 (4)=(10+16)-11 = 26-11 = 15 ->F (5)=(1-1)=0 といった形で出来ると思います。

dsx32498
質問者

お礼

詳細にありがとうございました。 ここまで書いていただけて大変助かります。 分かりやすい回答でありがとうございました。

  • sacra_sak
  • ベストアンサー率46% (24/52)
回答No.5

 2AFDE-1BCDF = (2×16^4+10×16^3+15×16^2+13×16+14)-(1×16^4+11×16^3+12×16^2+13×16+15) = 1×16^4+(-1)×16^3+3×16^2+0×16+(-1)    (ここで 1×16^4 = 16×16^3,16^2 = 16×16 = 15×16+16 だから) = 16×16^3-1×16^3+2×16^2+16^2+0-1 = 15×16^3+2×16^2+(15×16+16)-1 = 15×16^3+2×16^2+15×16+15  よってこれは 0x F2FF となります.

dsx32498
質問者

お礼

16^4とか乗数があったので、混乱しましたが 良く分かりました!ありがとうございました。

回答No.4

2AFDE=(2×16^4)+(10×16^3)+(15×16^2)+(13×16^1)+(14×16^0) -1BCDF=(1×16^4)+(11×16^3)+(12×16^2)+(13×16^1)+(15×16^0) F2FF=(0×16^4)+(15×16^3)+(2×16^2)+(15×16^1)+(15×16^0) (16^4)(16^3)(16^2)(16^1)(16^0) 2AFDE= 2 10 15 13 14 -1BCDF= -1 11 12 13 15 0F2FF= 0 15 2 15 15 これを見れば一目瞭然!(であればいいですが) ちなみに、桁をひとつ下げる際には、 (1×16^1)= (16×16^0) (2×16^1)= (1×16^1+16×16^0) (1×16^2)= (16×16^1) というように繰り下げます。

dsx32498
質問者

お礼

隣の行から借りる事が分からなかったです。 これで計算出来ました。ありがとうございます。

回答No.3

>質問の計算式で、なぜ15×16^3・・・になるかが 10進数の引き算でも同じ桁の引き算がマイナスになる場合は、ひとつ上の桁からひとつ借りますよね? 16進数でも同じで、上の桁からひとつ借りて 2×16^4+10×16^3=1×16^4+26×16^3 として計算しています。

dsx32498
質問者

お礼

上の桁から借りるということですか! 分かりました。ありがとうございます。

  • h-mique
  • ベストアンサー率50% (16/32)
回答No.2

>(1)2AFDE-1BCDF >回答がありますが理解出来ません。 16進数だから難しいのであって、10進数で同じやり方をするとわかりやすいです。 (私はこれで16進数や8進数を理解しました) 23444-12345(10進数) これなら簡単に解けますよね? これを(1)と同じやり方にすると 23444=2x10^4 + 3x10^3 + 4x10^2 + 4x10 + 4 12345=1x10^4 + 2x10^3 + 3x10^2 + 4x10 + 5 になるわけです。 16進数は10が16になっただけ 1の位の4-5が10進数なら9になり10の位が繰り下がるが、16進数の場合、9ではなく15(F)になるだけ こうやって考えれば理解できませんか?^^

dsx32498
質問者

補足

回答ありがとうございます。 質問の計算式で、なぜ15×16^3・・・になるかが 全く分かりません。それはどの様に理解すれば良いのでしょうか?

  • hana_Z
  • ベストアンサー率17% (28/157)
回答No.1

n進数を10進数に直す方法を知れば、一挙解決。 で、方法ですが、 n進数の1桁目は、1です。 これは、nの0乗だからです。 2桁目は、nの1乗です。 3桁目は、nの2乗です。 4桁目は、nの3乗です・・・、 これが基本単位なので、 あとはそれぞれの桁がいくつあるかを見て、 かけ算していけば10進法に直せます。 なぜそうなるかって、 それは、それぞれの桁がnコ集まれば、 次の桁に繰り上がるからです。 以上。

dsx32498
質問者

お礼

そういう事ですか、どうもありがとうございました。

関連するQ&A