質問: ### 前提・質問 機械語について学習し始めたものです。 基本的なことかもしれませんが、16進数でのキャリーやオーバーフローが起こる場合の具体例 がよくわかりません。(特に符号ありの場合です) そもそも16進数になった場合の負の数値の計算はどう扱えばいいのでしょうか
回答: 符号付き16進数(符号付き2進数を16進数表現した物)であれば、最上位桁が`8`~`F`の場合が負ですね。 一般的には、キャリーというのは最上位ビット(符号ビット)からその上位へのあふれ。オーバーフローというのは、最上位ビットから2つ目から、最上位ビット(符号ビット)へのあふれ、です。 加算でオーバーフローが発生するケース: ・正の数同士を加算して、最上位ビットが1になった ・負の数同士を加算して、正常位ビットが0になった オーバーフローが発生するというのは結果が数値表現範囲を越えたということで、結果が正しくないです。 例:符号付き16進1桁の場合。10進で言うと、-8 ~ +7 の表現が可能。 3+7=A ・・・オーバーフロー発生 (10進だと3+7=10) E+9=17 ・・・キャリーとオーバーフロー発生 (10進だと(-2)+(-7)=-9) 3+E=11 ・・・キャリー発生(10進だと3+(-2)=1)キャリーを無視すると結果は正しい