バイナリ値は2の補数形式です。
110001(-15)と101110(-18)を追加し、答えを6ビット整数で格納する必要がある場合、これはアンダーフロー/オーバーフローです。
これはオーバーフローです、あなたの教授は正しいです。割り当てられたスペースに保持できるビットをさらに格納しています(ビットが表す数が負の場合でも)。
アンダーフローとは、大きな数学にシフトすることでビットがゼロになるときです。固定小数点演算では非常に一般的です。非常に小さい数を非常に大きい数で割ると、多くの場合0になります。これはアンダーフローです。
内容が-70と-90の2つのレジスタを追加し、それを3番目のレジスタに格納するための良い例があります。
Let's assume
R1[8 bits] = -70
R2[8 bits] = -90
Result[9 bits] = -160, an extra bit for overflow.
この例は、以下の参照1のoverflow_signed_detectionページで説明されています。このページで説明されているルールを使用すると、例を任意の2つの符号付き10進数にスケーリングできます。
編集:-33は6ビットには大きすぎることに気付いたので、結果は-33ではなく+31になり、間違いなくオーバーフローになります:)
間違いなくオーバーフローではない場合は、2つの数値を加算して、正しい結果を取得します。オーバーフローの例は、2つの負の数を加算し、結果として正の数を取得することです(またはその逆)。
たとえば、2つの正の数0x7fffffffと0x00000001を追加すると、負の数0x80000000が得られますが、これは間違いなく間違っているため、オーバーフローします。
オーバーフローとキャリーを混同しているのではないでしょうか。