符号付き整数型【signed integer type】

コンピュータは数値を2進数で内部表現するため、符号付き整数型では限られたビット数の中で値の大きさと正負の別を表現する必要がある。現在のほとんどの処理系では、最上位ビットが符号の判別に用いられ、「0」であれば正または0、「1」であれば負の値として解釈される。これは負の数の表現形式における「2の補数」方式に当たり、正と負の加減算を同一の回路で処理できる。
表現できる値の範囲はビット幅によって決まる。nビットの符号付き整数型が扱える範囲は −2n−1 から 2n−1−1 までとなる。具体的には、8ビット(1バイト)では −128~127、16ビット(2バイト)では −32,768~32,767、32ビット(4バイト)では −2,147,483,648~2,147,483,647、64ビット(8バイト)では −9,223,372,036,854,775,808~9,223,372,036,854,775,807 となる。
型名はプログラミング言語や処理系によって異なる。C言語では int型、short型、long型などの整数型がデフォルトで符号付きとなり、「unsigned」を付与することで符号なし整数型に切り替えられる。Javaではbyte型、short型、int型、long型が符号付き整数型に相当し、C#でも同様である。Rustでは i8型、i16型、i32型、i64型のようにビット幅を型名に明示する。
一方、符号なし整数型は符号ビットを持たず、0と正の整数のみを扱う代わりに、同じビット幅で符号付き整数型の約2倍の最大値を表現できる。例えば、32ビットの符号なし整数型では 0~4,294,967,295 を扱える。メモリアドレスやビット演算など、負の値が生じない場面ではこちらが選ばれることが多い。格納できる範囲を超えた演算は「オーバーフロー」(桁あふれ)を引き起こし、その場合の結果は言語や実行環境の仕様に依存する。扱う値の範囲に応じて適切なビット幅の型を選択する必要がある。