符号拡張とは? わかりやすく解説

Weblio 辞書 > コンピュータ > IT用語辞典 > 符号拡張の意味・解説 

符号拡張

読み方ふごうかくちょう
【英】sign extension

符号拡張とは、符号付きデータビット長の大きデータ変換する際に、値を変えないようにビット補ってデータ拡張することである。

符号拡張のためには、符号ビットと同じ値で同じ大きさになるように埋める。

8ビットバイト値を16ビットワード値として取り扱う際の具体例では、8ビットの-2(2の補数表現で11111110)を符号拡張すると、16ビットの-2(1111111111111110)となる。

なお、符号拡張を行うと都合が悪い場合もあるため、プロセッサには、符号拡張を行う命令と、行わず単純に0で埋め命令持っていることが多い。

産業・技術のほかの用語一覧
情報処理:  ハイライト表示  ビットパターン  フォント  符号拡張  フィルタ  外字  キャメルケース

符号拡張

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/05/24 14:58 UTC 版)

ナビゲーションに移動 検索に移動

符号拡張(ふごうかくちょう、Sign extension)とは、符号付の数値を表現するビット列が格納領域のビット幅より短い場合に、隙間を適切に埋めることによって数値としての同一性を維持する手法である。

例えば、8ビットの (-10)10 という値は2の補数表現では以下のようになる。

11110110

これを16ビットに符号拡張すると以下のようになる。

11111111 11110110

符号拡張しないで16ビットの領域に格納した場合、以下のようになる

00000000 11110110

これを整数として解釈すると (246)10 となってしまい、数値としての同一性が維持されない。

符号拡張にはしばしばマイクロプロセッサコンパイラバグが隠れていることがある。

ビットシフトでの符号拡張

算術ビットシフトで右シフトを行う場合、MSBが空く。 これを符号拡張で埋める。

ロード命令での符号拡張

たとえば、32ビットのCPUで、レジスタの長さはたいていの場合32ビットである。 メモリから32ビットより小さい幅のデータをロードする場合、レジスタの内容の一部だけがロードしたデータに置き換わる。 このデータが符号付整数であった場合、その後の演算をするには符号拡張を行う必要がある。 このため、一般的なマイクロプロセッサでは、符号拡張付きのロード命令と符号拡張のないロード命令を用意している。 そして、符号拡張のないロード命令ではレジスタ上の空いているビット列は全部 0 にすることが多い。

イミディエート値の符号拡張

マイクロプロセッサの命令セットには、命令ワード内に直接書かれた値を算術演算などに使用する命令がある場合がある。 これをイミディエート値または即値というが、この数値はレジスタのビット幅より小さいことが多い。 イミディエート値とレジスタの内容を符号付整数として解釈して加算などを行う場合、プロセッサは実行ユニット内部でイミディエート値を符号拡張する。 ただし、この場合も一般的に符号拡張する命令と符号拡張しない命令が存在することが多いので注意が必要である。

x86 での符号拡張

x86系のマイクロプロセッサでは、符号拡張は cbw, cwd, cwde, cdq という命令で行われる(例えば cbw は "convert byte to word")。

参考文献

  • Mano, Morris M.; Kime, Charles R. (2004). Logic and Computer Design Fundamentals (3rd ed.), pp 453. Pearson Prentice Hall. ISBN 0-13-140539-X.

関連項目



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「符号拡張」の関連用語

符号拡張のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



符号拡張のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
IT用語辞典バイナリIT用語辞典バイナリ
Copyright © 2005-2025 Weblio 辞書 IT用語辞典バイナリさくいん。 この記事は、IT用語辞典バイナリの【符号拡張】の記事を利用しております。
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアの符号拡張 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2025 GRAS Group, Inc.RSS