符号付きおよび符号なしの型に対するビット演算子の動作を理解しようとしています。ISO/IEC 文書によると、以下は私の理解です。
左シフト演算子
の結果は
E1 << E2
、E1 左シフトされた E2 ビット位置です。左シフトのために空になったビットはゼロで埋められます。
E1 as signed non-negative:
E1 << E2
値が結果の型で表現できる場合、E1 に E2 の 2 乗を掛けた結果になります。Q1: 符号付きネガはどうですか?
Q2: 以下の文脈で「被減モジュロ」が何を意味するのか理解できません。「E1 が unsigned 型の場合、結果の値は E1 × 2E2 であり、結果の型で表現可能な最大値より 1 を法として減じられます」 .
右シフト演算子
の結果は、
E1 >> E2
E1 の右シフトされた E2 ビット位置です。E1 as signed non-negative/unsigned : 結果の値は、E1 / 2E2 の商の整数部分です。
Q3: 符号付きの負の整数について、空いている位置が で埋められると定義している本をいくつか見ました。符号付きの負の整数
1
での右シフト演算子の使用について詳しく教えてください。