- ベストアンサー
16進数 加算 減算 C言語
今学校でC言語を学んでいるのですが、「16進数同士の加算・減算」を行う問題が出されました。 16進同士の計算となると'A'~'F'や桁上がりの対処など壁にぶち当たっています。 私は10進に直してから加算・減算し、また16進に直す方法しか思いつかず。16進のままで計算は出来ると思うのですが、分かりません。 教えて下さい。お願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
あなたのいう「16進数同士の加算・減算」とはどのようなものなのでしょうか? また, 「10進に直す」とはどのような操作を意味するのでしょうか? 特に変換などせずとも 0x37 + 0x1A と書けば勝手に計算してくれる (この場合は 0x51 かな) はずですが.
その他の回答 (1)
- pyonmae
- ベストアンサー率64% (40/62)
こんにちは。 必殺技は無いと思います。 慣れるしかないです。 私の場合、脳内で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進とはなんぞや?的なものを勉強出来ました。 ありがとうございました。
補足
説明不足でした。 16進同士の加減算は紙上では一通り出来ます。 今回は、「プログラム(C言語)上でどのように組めば16進同士の加減算(特に桁上がり)が出来るのか?」という質問でした。 また、お時間があれば返答宜しくお願いします。 申し訳ありませんでした。。
お礼
今試しにやってみたら思い描く形になりました。 普通に「0x」で16進と定義してあげればよかったんですね。 難しく考え過ぎてました。 本当にありがとうございました。