符号拡張
符号拡張(ふごうかくちょう、Sign extension)とは、符号付の数値を表現するビット列が格納領域のビット幅より短い場合に、隙間を適切に埋めることによって数値としての同一性を維持する手法である。
例えば、8ビットの (-10)10 という値は2の補数表現では以下のようになる。
これを16ビットに符号拡張すると以下のようになる。
符号拡張しないで16ビットの領域に格納した場合、以下のようになる
これを整数として解釈すると (246)10 となってしまい、数値としての同一性が維持されない。
符号拡張にはしばしばマイクロプロセッサやコンパイラのバグが隠れていることがある。
x86系のマイクロプロセッサでは、符号拡張は cbw, cwd, cwde, cdq という命令で行われる(例えば cbw は "convert byte to word")。