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

今学校でC言語を学んでいるのですが、「16進数同士の加算・減算」を行う問題が出されました。
16進同士の計算となると'A'~'F'や桁上がりの対処など壁にぶち当たっています。
私は10進に直してから加算・減算し、また16進に直す方法しか思いつかず。16進のままで計算は出来ると思うのですが、分かりません。

教えて下さい。お願いします。

A 回答 (2件)

あなたのいう「16進数同士の加算・減算」とはどのようなものなのでしょうか? また, 「10進に直す」とはどのような操作を意味するのでしょうか?


特に変換などせずとも
0x37 + 0x1A
と書けば勝手に計算してくれる (この場合は 0x51 かな) はずですが.
    • good
    • 1
この回答へのお礼

今試しにやってみたら思い描く形になりました。
普通に「0x」で16進と定義してあげればよかったんですね。
難しく考え過ぎてました。

本当にありがとうございました。

お礼日時:2009/12/25 15:13

こんにちは。


必殺技は無いと思います。
慣れるしかないです。
私の場合、脳内でA~Fを10進の値に強力に紐づけてやっています。
 10→A
 11→B
 12→C
 13→D
 14→E
 15→F
この6コを、強力に頭にたたきこみます。
その上で、
 9+1=10→Aです。
 6+6=12→Cです。
慣れれば、
 5+8=D
と出せるようになります。
そうこうしている内に、A~Fはアルファベットではなく数字ではないかと思えてきます。
さらにその上で、
複数桁は、所詮ひと桁加減算の繰り返しですので、上記を繰り返すだけです。
ひと桁計算をマスターした後なら、繰り上がりなど「へのカッパ」です。
謙虚に、筆算を紙に書いて、じっくり取り組みましょう。
頑張って下さい。

この回答への補足

説明不足でした。
16進同士の加減算は紙上では一通り出来ます。
今回は、「プログラム(C言語)上でどのように組めば16進同士の加減算(特に桁上がり)が出来るのか?」という質問でした。

また、お時間があれば返答宜しくお願いします。
申し訳ありませんでした。。

補足日時:2009/12/25 14:59
    • good
    • 0
この回答へのお礼

今回私の思っていた回答とは少し違っていたものの、改めて16進とはなんぞや?的なものを勉強出来ました。

ありがとうございました。

お礼日時:2009/12/25 15:16

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A