2の補数のソースを表示
←
2の補数
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
{{読み仮名|'''2の補数'''|にのほすう|{{Lang-en-short|two's complement}}}}は、{{math|2}} を[[位取り記数法]]の基数とした場合の[[補数#定義|基数の補数]]である{{sfn|JIS X 0005:2002|2002|loc=05.08.04 2の補数}}{{sfn|ISO/IEC 2382:2015|2015|loc=2. Terms and definition. 2121100. twos complement}}{{sfn|JIS X 0005:2002|2002|loc=05.08.02 基数の補数}}{{sfn|ISO/IEC 2382:2015|2015|loc=2. Terms and definition. 2121098. radix complement}}{{sfn|JIS X 0005:2002|2002|loc=05.08.01 補数}}{{sfn|ISO/IEC 2382:2015|2015|loc=2. Terms and definition. 2121097. complement}}{{efn2|[[三進法]]における[[補数#定義|減基数の補数]](基数マイナス1の補数)も「2の補数」と呼ばれるが([[補数#呼称]]を参照)、本項では扱わない。}}。すなわち、[[整数]] {{mvar|x}} との[[加法|和]]が基数 {{math|2}} の[[冪乗|冪]] {{math|2{{sup|''n''}}}} となる数 {{math2|1=''x''{{sub|c}} = 2{{sup|''n''}} − ''x''}} のことをいう{{efn2|name=notation-complement|本項では数 {{mvar|x}} の補数を下付きの添字 c を用いて {{math|''x''{{sub|c}}}} と表す(例:{{math2|1=(0111{{sub|2}}){{sub|c}} = 1001{{sub|2}}}}{{efn2|name=notation-radix}})。添字 c は {{en|complement}} の頭文字である。}}(例:{{math2|1=2{{sup|4}} = 16}} について、{{math|5}} に対応する2の補数は {{math2|1=11 = 16 − 5}})。 数 {{mvar|x}} とその2の補数 {{math|''x''{{sub|c}}}} を[[二進法]]で表せば、2の補数 {{math|''x''{{sub|c}}}} は {{mvar|x}} との和が {{math2|''n'' + 1}} 桁に繰り上がる最小の数といえる(例:{{math2|1=2{{sup|4}} = 10000{{sub|2}} = (1111 + 1){{sub|2}}}} について{{efn2|name=notation-radix|下付きの添字は[[位取り記数法]]の基数を表す。基数自身の表記には[[十進法]]を用いる。}}、{{math2|1=5{{sub|10}} = 0101{{sub|2}}}} に対応する2の補数は {{math2|1=11{{sub|10}} = 1011{{sub|2}} = (1111 − 0101 + 1){{sub|2}}}})。 2の補数を得る手順は、基数の補数および減基数の補数の定義から、[[1の補数]]に {{math|1}} を足す操作となる。1の補数は二進表示された数の各位の値([[ビット]])を {{math|0}} から {{math|1}}、また {{math|1}} から {{math|0}} に置き換える操作([[ビット演算#NOT|ビット反転]])によって得られるため(例:{{math2|0101 → 1010}})、2の補数はしばしば元の数をビット反転して1を足したものとして定義される。 ある数の2の補数を[[反数]]と見なせば、二進法において決まった桁数を持った数をそれぞれ[[正の数と負の数|非負]]の数と負の数に対応づけられる([[#負の数の表現]])。 特に {{mvar|n}} 桁の二進数について {{math|0}} から {{math|2{{sup|''n''−1}} − 1}}(例:{{math|1=''n'' = 8}} なら {{math|0}} から {{math|127}})の範囲で符号なし表現と一致させたものは{{読み仮名|'''2の補数表現'''|にのほすうひょうげん|{{lang-en-short|two's complement representation}}}}または{{読み仮名|'''2の補数表記'''|にのほすうひょうき|{{lang-en-short|two's complement notation}}}}と呼ばれる([[#2の補数表現]])。 2の補数表現は[[コンピュータ]]の分野において、[[整数型#固定長|固定長]]の[[符号 (数学)|符号]]付きの[[整数型]]や[[固定小数点数]]の表現に利用されている。 また2の補数表現は[[加算器]]で減算をするために使われる。 == 計算例 == 以下に[[#2の補数表現]]における計算例を示す。 === 補数であることの確認 === 例えば、4桁の[[二進数]] {{math2|1=0010{{sub|2}} (= 2)}} に対する2の補数は {{math|1110{{sub|2}}}} である。実際、これらを[[加法|足し算]]は以下のようになる: :<math display="block"> \begin{array}{lrrrrr} & & 0 & 0 & 1 & 0 \\ {}+{} & & 1 & 1 & 1 & 0 \\ \hline & \cancel{1} & 0 & 0 & 0 & 0 \end{array} </math> 結果は {{math2|1=10000{{sub|2}} = 2{{sup|4}} = 16}} になっており、{{math|1110{{sub|2}}}} が {{math|0010{{sub|2}}}} の {{math2|1=10000{{sub|2}}}} に対する補数になっていることが確かめられる。また5桁目以降を無視し下4桁だけ取り出せば、結果は {{math|0000{{sub|2}}}} となる。つまり、{{math|0010{{sub|2}}}} にその2の補数 {{math|1110{{sub|2}}}} を足すということは {{math|0010}} から {{math|0010}} 自身を引くということと同じ意味を持つ。言い換えれば、 {{math2|1110{{sub|2}}}} は負数 {{math|−2}} を表している。 === 引き算と補数の足し算の比較 === 例えば、二進数 {{math2|1=0101{{sub|2}} (= 5)}} から二進数 {{math2|1=0011{{sub|2}} (= 3)}} を引く場合、以下のように計算できる: :<math display="block"> \begin{array}{lrrrrr} & & 0 & 1 & 0 & 1 \\ {}-{} & & 0 & 0 & 1 & 1 \\ \hline & & 0 & 0 & 1 & 0 \end{array} </math> 一方、二進数 {{math|0011{{sub|2}}}} の2の補数 {{math|1101{{sub|2}}}} を足す計算は、以下のようになる: :<math display="block"> \begin{array}{lrrrrr} & & 0 & 1 & 0 & 1 \\ {}+{} & & 1 & 1 & 0 & 1 \\ \hline & \cancel{1} & 0 & 0 & 1 & 0 \end{array} </math> 5桁目以降を無視し下4桁を取り出せば、こちらも結果は {{math2|1=0010{{sub|2}} (= 2)}} になり、引き算の場合と一致する。また、{{math|1101{{sub|2}}}} は負数 {{math|−3}} を表していることが分かる。 === 算術オーバーフローの例 === 足し算の結果、[[算術オーバーフロー]]が起きることがある。 例えば、二進数 {{math2|1=0101{{sub|2}} (= 5)}} と二進数 {{math2|1=0011{{sub|2}} (= 3)}} の足し算は以下のように計算できる: :<math display="block"> \begin{array}{lrrrrr} & & 0 & 1 & 0 & 1 \\ {}+{} & & 0 & 0 & 1 & 1 \\ \hline & & 1 & 0 & 0 & 0 \end{array} </math> 結果は {{math2|1=1000{{sub|2}}}} となるが、これは2の補数表現において負の整数 {{math|−8}} に対応し、通常の足し算で期待される結果 {{math2|1=5 + 3 = 8}} と一致しない。 同様に、二進数 {{math2|1=1101{{sub|2}} (= −3)}} と二進数 {{math2|1=1010{{sub|2}} (= −6)}} の足し算は期待する結果を与えない: :<math display="block"> \begin{array}{lrrrrr} & & 1 & 1 & 0 & 1 \\ {}+{} & & 1 & 0 & 1 & 0 \\ \hline & \cancel{1} & 0 & 1 & 1 & 1 \end{array} </math> 結果は {{math2|1=0111{{sub|2}} (= 7)}} となり、通常の足し算で期待される結果 {{math2|1=(−3) + (−6) = −9}} と一致しない。 == 負の数の表現 == 2の補数を用いて、[[二進法]]で表された数(二進数)を[[正の数と負の数|負]]の[[整数]]に対応づけられる。2の補数の[[定義]]より、{{mvar|n}} 桁{{efn2|name=digits|ここでは {{mvar|n}} 桁目の値が {{math|0}} となるものも {{mvar|n}} 桁の数と呼んでいる。例えば {{math|0001}} は 4 桁の数である。}}の二進数 {{mvar|x}} とその補数 {{math|''x''{{sub|c}}}} は以下の関係を満たす{{sfn|水谷『数の補数表現』|pp=2–3|loc=2.2 符号ビットと 2 の補数}}: :<math display="block"> x + x_\mathrm{c} = 2^n \quad(\iff x_\mathrm{c} = 2^n - x )\,. </math> [[冪乗|冪]] {{math|2{{sup|''n''}}}} の[[倍数]]を {{math|0}} と同一視すれば、上記の補数の関係は {{math|2{{sup|''n''}}}} を法とする[[整数の合同|合同式]]に置き換えられる{{sfn|西村『論理(スイッチング)回路と計算』|p=14|loc=2の補数表現でなぜうまく行くのか?}}: :<math display="block"> x + x_\mathrm{c} \equiv 0 \pmod {2^n} \,. </math> これは {{mvar|x}} の補数 {{math|''x''{{sub|c}}}} を {{mvar|x}} の[[反数]] {{math|−''x''}} と見なすことを意味する。すなわち、数 {{mvar|y}} から {{mvar|x}} を引く操作は、数 {{mvar|y}} と補数 {{math|''x''{{sub|c}}}} の[[加法|たし算]]に置き換えられる{{sfn|水谷『数の補数表現』|p=2|loc=2.1 補数}}{{sfn|中野『代数入門』|p=18|loc=5.1 合同式, 命題5.2}}: :<math display="block"> y - x \equiv y + 2^n - x \equiv y + x_\mathrm{c} \pmod {2^n} \,. </math> 同様に反数 {{math|−''x''}} の[[乗法|かけ算]]は補数の積に置き換えられる{{sfn|中野『代数入門』|p=18|loc=5.1 合同式, 命題5.2}}: :<math display="block"> y \cdot (- x) \equiv y \cdot 2^n + y \cdot (- x) \equiv y \cdot x_\mathrm{c} \pmod {2^n} \,. </math> == {{vanc|2の補数表現|2の補数表記}} == [[#負の数の表現]]節の方法で負の数の計算を行えるが、具体的な数値計算を行うには、どの[[二進法|二進数]]([[ビット]]列)がどの数値を表すかという対応関係を[[定義]]しなければならない。{{math|0}} から {{math|2{{sup|''n''−1}} − 1}} までの非負整数をそのまま通常の[[位取り記数法]]における二進表示、 : <math display="block"> \begin{align} 0 &\mapsto 0_2, \\ 1 &\mapsto 1_2, \\ 2 &\mapsto {10}_2, \\ & \;\; \vdots \\ 2^{n-1}-2 &\mapsto {011\cdots10}_2, \\ 2^{n-1}-1 &\mapsto \underbrace{011\cdots11}_{n \text{桁}}{}_{2} \end{align} </math> に対応づければ、これらの数の[[補数]]として[[正の数と負の数|負]]の[[整数]]に対する2の補数表現が得られる: : <math display="block"> \begin{alignat}{2} 2^{n-1} &\equiv -2^{n-1} &&\mapsto {100 \cdots 00}_2, \\ 2^{n-1} + 1 &\equiv 1 - 2^{n-1} &&\mapsto {100 \cdots 01}_2, \\ & \;\; \vdots && \;\; \vdots \\ 2^{n} - 2 &\equiv -2 &&\mapsto {111 \cdots 10}_2, \\ 2^{n} - 1 &\equiv -1 &&\mapsto {111 \cdots 11}_2 \,. \end{alignat} </math> 具体例として、{{math|1=''n'' = 4}} 桁{{efn2|name=digits}}の二進数における対応表を示す: {| class="wikitable" style="text-align:center" |+ {{math|2{{sup|4}}}} についての2の補数表現における、二進数(ビット列)と対応する数値の一覧 |- ! 対応する数値 !! 二進数 !! 対応する数値 !! 二進数 |- | {{math|0}} || {{math|0000{{sub|2}}}} | - || - |- | {{math|1}} || {{math|0001{{sub|2}}}} | {{math|−1}} || {{math|1111{{sub|2}}}} |- | {{math|2}} || {{math|0010{{sub|2}}}} | {{math|−2}} || {{math|1110{{sub|2}}}} |- | {{math|3}} || {{math|0011{{sub|2}}}} | {{math|−3}} || {{math|1101{{sub|2}}}} |- | {{math|4}} || {{math|0100{{sub|2}}}} | {{math|−4}} || {{math|1100{{sub|2}}}} |- | {{math|5}} || {{math|0101{{sub|2}}}} | {{math|−5}} || {{math|1011{{sub|2}}}} |- | {{math|6}} || {{math|0110{{sub|2}}}} | {{math|−6}} || {{math|1010{{sub|2}}}} |- | {{math|7}} || {{math|0111{{sub|2}}}} | {{math|−7}} || {{math|1001{{sub|2}}}} |- | - || - | {{math|−8}} || {{math|1000{{sub|2}}}} |} 結局、{{mvar|n}} 桁の二進数の {{math|1=''k'' + 1}} 桁目の値を {{math|''b{{sub|k}}'' ∈ {{mset|0, 1}}}} とすれば、2の補数表現は以下のように表せる{{sfn|水谷『数の補数表現』|p=3|loc=2.2 符号ビットと 2 の補数}}: : <math display="block"> {b_{n-1} b_{n-2} \cdots b_1 b_0}_{(2)} \mapsto - b_{n-1} \cdot 2^{n-1} + \sum_{k=0}^{n-2} {b_k \cdot 2^k} \,. </math> [[最上位ビット]] {{math|''b''{{sub|''n''−1}}}} は{{読み仮名|'''符号ビット'''|ふごうビット|{{lang-en-short|sign bit}}}}と呼ばれ、数値の正負を決定する。すなわち、符号ビットが {{math|0}} なら非負の数値を表し、{{math|1}} なら負の数値を表す。 上記の数の補数は、以下のように表せる: : <math display="block"> \left({b_{n-1} b_{n-2} \cdots b_1 b_0}_{(2)}\right)_\mathrm{c} \mapsto 1 - (1 - b_{n-1})\cdot 2^{n-1} + \sum_{k=0}^{n-2} {(1 - b_k) \cdot 2^k} \,. </math> [[等比数列]]の和 <math display="inline"> \sum_{k=0}^{n-2} 2^k = 2^{n-1} - 1</math> を用いれば、上記の補数は以下のようにも表せる{{sfn|水谷『数の補数表現』|p=3|loc=2.2 符号ビットと 2 の補数}}: : <math display="block"> \left({b_{n-1} b_{n-2} \cdots b_1 b_0}_{(2)}\right)_\mathrm{c} \mapsto b_{n-1} \cdot 2^{n-1} - \sum_{k=0}^{n-2} {b_k \cdot 2^k} \,. </math> これは結局、元の数に負符号を付けた形となっている(ただし元の数が {{math|−2{{sup|''n''−1}}}} の場合は[[算術オーバーフロー]]が発生する。オーバーフローをチェックせずラップアラウンドする場合、{{math|−2{{sup|''n''−1}}}} 自身へ写る{{efn2|実際、[[Java]]の <code>java.lang.Math.abs(int)</code> などは符号付き整数型の最小値に対して引数の値をそのまま結果として与える{{sfn|Java SE & JDK API Specification|loc=java.lang.Math#abs(int)}}。また、組み込みの整数演算は算術オーバーフローを検出しない{{sfn|Java Language Specification|loc=4.2.2. Integer Operations}}。一方で[[C言語]]や[[C++]]において、2の補数表現による符号付き整数の最小値(例:<code>INT_MIN</code>)に単項マイナス演算子を作用させる(例:<code>-INT_MIN</code>)と、[[汎整数拡張]]により結果の型がオペランドの型より大きくなる場合を除き、[[算術オーバーフロー]]が発生する。符号付き整数の算術オーバーフローは[[未定義動作]]を引き起こす。算術オーバーフローの例に関しては例えば {{harvnb|INT32-C}} を参照。}})。 == 2の補数表現の性質 == === 符号なし整数との一致 === 2の補数表現は、符号ビットが {{math|0}} なら符号なし整数表現(つまり通常の[[二進法]])に一致する{{sfn|西村『論理(スイッチング)回路と計算』|p=18|loc=2の補数表現の性質}}。この性質は[[符号付数値表現#符号・絶対値表現|符号・絶対値表現]]や[[1の補数]]表現も持っている。 === 最小値と最大値の非対称性 === 2の補数表現において、{{mvar|n}} 桁({{mvar|n}} 個の[[ビット]])の二進数で表せる数値の範囲は {{math2|−2{{sup|''n''−1}}}} から {{math2|+(2{{sup|''n''−1}} − 1)}} までである{{sfn|西村『論理(スイッチング)回路と計算』|p=18|loc=2の補数表現の性質}}(例: {{math2|1=''n'' = 8}} の場合、{{math2|1=−2{{sup|7}} = −128}} から {{math2|1=+(2{{sup|7}} − 1) = +127}})。最小値と最大値の絶対値を比較すると、負の数の範囲は正の数の範囲に対して {{math|1}} だけ大きく、非対称になっている。そのため、最小値の補数を求めようとすると[[算術オーバーフロー]]が生じる([[汎整数拡張]]によって型が格上げされる場合は除く)。この性質は[[符号付数値表現#符号・絶対値表現|符号・絶対値表現]]や[[1の補数]]表現にはなく、符号・絶対値表現および1の補数表現での数値の範囲は {{math2|−(2{{sup|''n''−1}} − 1)}} から {{math2|+(2{{sup|''n''−1}} − 1)}} までと対称的になっている。 === 偶奇性の判定 === 2の補数表現において、[[整数]]の[[偶奇性]]を判定するには最下位の桁([[最下位ビット]])が[[偶数]]か[[奇数]]かを判定すればよい。すなわち二進数表示の最下位の値 {{math|''b''{{sub|0}}}} が {{math|0}} なら偶数であり {{math|1}} なら奇数であることが示せる{{sfn|西村『論理(スイッチング)回路と計算』|p=18|loc=2の補数表現の性質}}。同じ性質は[[符号付数値表現#符号・絶対値表現|符号・絶対値表現]]も持つが、[[1の補数]]表現においては最上位の桁([[最上位ビット]])の検査が必要であり、最上位ビットが {{math|1}} なら最下位ビットが {{math|1}}、最上位ビットが {{math|0}} なら最下位ビットが {{math|0}} の場合に偶数となる。 === 正負の判定 === 2の補数で表される数は、符号ビット([[最上位ビット]]) {{math|''b''{{sub|''n''−1}}}} が {{math|0}} なら非負の値を取り {{math|1}} なら負の値を取る{{sfn|西村『論理(スイッチング)回路と計算』|p=18|loc=2の補数表現の性質}}。すなわち、負値か非負値かの判定は符号ビットのみから判別できる。符号・絶対値表現や1の補数表現ではゼロを表す二進数が一意でなく、符号ビットが {{math|0}} の {{math|+0}} と符号ビットが {{math|1}} の {{math|−0}} があるため、{{math|−0}} が許容される限り、これらの表現では符号ビットのみから負数か非負数かを判定できない。 === 1の補数との関係 === 2の補数表現において、{{math|−1}} は常にすべての位の値が {{math|1}} の二進数 {{math|111...11{{sub|2}}}} に対応づけられる。従って、数を[[ビット]]列とみなせば、ビット列 {{mvar|x}} とその[[ビット演算#NOT|ビットを反転]]{{efn2|ここで[[ビット演算#NOT|ビット反転]]とは各ビットに対する否定演算を指す。すなわち入力が {{math|0}} なら {{math|1}} を出力し、入力が {{math|1}} なら {{math|0}} を出力する。}}させたビット列 {{math|{{sup|f}}''x''}} は常に以下を満たす: : <math display="block"> x + {}^\mathrm{f}x \equiv -1 \pmod{2^n} \,. </math> 上記より、{{mvar|x}} の2の補数は {{math|1=''x''{{sub|c}} = {{sup|f}}''x'' + 1}} と表せる。従って[[減法]]は、 :<math display="block"> y - x \equiv y + {}^\mathrm{f}x + 1 \pmod{2^n} </math> と書き換えられる。ビット反転はまた[[1の補数]]を得る操作でもある。 : <math display="block"> {}^\mathrm{f}x \equiv -1 - x \equiv \left(2^n - 1\right) - x \pmod{2^n} \,. </math> 右辺の {{math2|1=(2{{sup|''n''}} − 1) − ''x''}} は {{mvar|x}} に対する1の補数そのものであるから、ビット反転は1の補数を得る操作になっている。 === 元の数とのビットの一致 === {{mvar|x}} の {{mvar|n}} 桁の二進数表示の下位 {{math2|''m'' − 1}} 桁目まで位の値が {{math|0}} だった場合、2の補数 {{math2|{{sup|f}}''x'' + 1}} を求める際、ビット反転した値が桁上りによって再び反転するため、下位 {{math2|1=''M'' = min(''m'', ''n'')}}{{efn2|{{math|min}} はここで、与えられた数の中で[[最大と最小|最小]]の数を表す。}}桁まで元の数とその2の補数の値が一致する。また残りの上位 {{math2|''n'' − ''M''}} 桁は、ビット反転 {{math|{{sup|f}}''x''}} の上位 {{math2|''n'' − ''M''}} 桁に一致する。例えば、補数と元の数の位の値が一致する部分に下線を引けば、{{math|1=''x'' = 0{{underline|100}}}} のビット反転は {{math2|1={{sup|f}}''x'' = 1{{underline|011}}}} であり、2の補数は {{math2|1={{sup|f}}''x'' + 1 = 1{{underline|100}}}} となる。同様に、{{math|{{underline|1000}}}} および {{math|{{underline|0000}}}} のビット反転はそれぞれ {{math|{{underline|0111}}}}, {{math|{{underline|1111}}}} であり、2の補数はそれぞれ {{math|{{underline|1000}}}}, {{math|{{underline|0000}}}} となる(表も参照)。 {| class="wikitable" style="text-align:center" |+ {{math|2{{sup|4}}}} についての2の補数表現における、補数と元の数との下位ビットの一致{{efn2|上位ビットの {{math|B}} は任意の値を表す。また、{{math|{{overline|B}}}} は {{math|B}} のビット反転である。下線で示す部分は元の数と対応する2の補数で一致する下位ビットの範囲を示している。}} |- ! 元の数と一致する下位ビットの桁数({{mvar|M}}) | 1 || 2 || 3 || 4 || 4 |- ! 元の数({{mvar|x}}) | {{math|B{{sub|3}}B{{sub|2}}B{{sub|1}}{{underline|1}}}} || {{math|B{{sub|3}}B{{sub|2}}{{underline|10}}}} || {{math|B{{sub|3}}{{underline|100}}}} || {{math|{{underline|1000}}}} || {{math|{{underline|0000}}}} |- ! ビット反転({{math|{{sup|f}}''x''}}) | {{math|{{overline|B}}{{sub|3}}{{overline|B}}{{sub|2}}{{overline|B}}{{sub|1}}{{underline|0}}}} || {{math|{{overline|B}}{{sub|3}}{{overline|B}}{{sub|2}}{{underline|01}}}} || {{math|{{overline|B}}{{sub|3}}{{underline|011}}}} || {{math|{{underline|0111}}}} || {{math|{{underline|1111}}}} |- ! 2の補数({{math|{{sup|f}}''x'' + 1}}) | {{math|{{overline|B}}{{sub|3}}{{overline|B}}{{sub|2}}{{overline|B}}{{sub|1}}{{underline|1}}}} || {{math|{{overline|B}}{{sub|3}}{{overline|B}}{{sub|2}}{{underline|10}}}} || {{math|{{overline|B}}{{sub|3}}{{underline|100}}}} || {{math|{{underline|1000}}}} || {{math|{{underline|0000}}}} |} == 脚注 == {{脚注ヘルプ}} === 注釈 === {{notelist2}} === 出典 === {{reflist}} == 参考文献 == * {{cite book|和書 |title=JIS X 0005:2002 情報処理用語(データの表現) |publisher=日本規格協会 |editor1=日本規格協会 |editor2=情報処理学会 |date=2002-08-31 |ref={{sfnref|JIS X 0005:2002|2002}} }} * {{cite book |title=ISO/IEC 2382:2015 Information technology — Vocabulary |publisher=ISO/IEC |editor1=ISO |editor2=IEC |date=2015-05 |ref={{sfnref|ISO/IEC 2382:2015|2015}} }} * {{cite book |title=IBM System/360 Principles of Operation |url=https://dl.acm.org/doi/10.5555/1102026 |doi=10.5555/1102026 |publisher=IBM |editor1=IBM |date=1964-01-01 |ref={{sfnref|IBM System/360 Principles of Operation|1964}} }} * {{cite web2 |title=数の補数表現 ― コンピュータは数値をどのように保持しているのか? |website=www.edu.tuis.ac.jp/~mackin |url=http://www.edu.tuis.ac.jp/~mackin/programming/bit.pdf |url-status=live |first=正大 |last=水谷 |accessdate=2023-05-11 |ref={{sfnref|水谷『数の補数表現』}} }} * {{cite web2 |title=基礎情報処理 ― 論理(スイッチング)回路と計算 |website=www.math.kyoto-u.ac.jp/~susumu |url=https://www.math.kyoto-u.ac.jp/~susumu/lecture/digital11.pdf |url-status=live |first=進 |last=西村 |accessdate=2023-05-11 |ref={{sfnref|西村『論理(スイッチング)回路と計算』}} }} * {{cite web2 |title=代数入門 |website=pc1.math.gakushuin.ac.jp/~shin |url=https://pc1.math.gakushuin.ac.jp/~shin/html-files/Algebra_Introduction/2022/book.pdf |url-status=live |first=伸 |last=中野 |date=2022-04-01 |accessdate=2023-05-11 |ref={{sfnref|中野『代数入門』}} }} * {{cite web2 |title=CERT C Coding Standard: INT32-C. Ensure that operations on signed integers do not result in overflow |website=wiki.sei.cmu.edu |url=https://wiki.sei.cmu.edu/confluence/x/UtYxBQ |url-status=live |first=Robert |last=Seacord |accessdate=2023-05-13 |ref={{sfnref|INT32-C}} }} * {{cite web2 |title=CERT C コーディングスタンダード: INT32-C. 符号付き整数演算がオーバーフローを引き起こさないことを保証する |website=www.jpcert.or.jp/sc-rules/ |url=https://www.jpcert.or.jp/sc-rules/c-int32-c.html |url-status=live |publisher=JPCERT/CC |date=2020-06-16 |accessdate=2023-05-14 |ref={{sfnref|INT32-C(和訳)}} }} * {{cite web2 |title=Chapter 4. Types, Values, and Variables ― Java Language Specification |website=docs.oracle.com/javase/specs/jls/ |url=https://docs.oracle.com/javase/specs/jls/se20/html/jls-4.html#jls-4.2 |url-status=live |publisher=Oracle |date=2023-03-03 |accessdate=2023-05-13 |ref={{sfnref|Java Language Specification}} }} * {{cite web2 |title=Class Math ― Java SE 20 & JDK 20 |website=docs.oracle.com/en/java/javase/20/docs/api/ |url=https://docs.oracle.com/en/java/javase/20/docs/api/java.base/java/lang/Math.html |url-status=live |publisher=Oracle |accessdate=2023-05-13 |ref={{sfnref|Java SE & JDK API Specification}} }} == 関連項目 == * [[符号付数値表現]] * [[コンピュータの数値表現]] * [[補数]] * [[1の補数]] * [[整数型]] * [[ブースの乗算アルゴリズム]] {{DEFAULTSORT:にのほすう}} [[Category:コンピュータの算術]] [[Category:コンピュータのデータ]] [[Category:プログラミング]] [[Category:数の表現]] [[Category:数学に関する記事|/2にのほすう]]
このページで使用されているテンプレート:
テンプレート:Cite book
(
ソースを閲覧
)
テンプレート:Cite web2
(
ソースを閲覧
)
テンプレート:Efn2
(
ソースを閲覧
)
テンプレート:Math
(
ソースを閲覧
)
テンプレート:Math2
(
ソースを閲覧
)
テンプレート:Mvar
(
ソースを閲覧
)
テンプレート:Notelist2
(
ソースを閲覧
)
テンプレート:Reflist
(
ソースを閲覧
)
テンプレート:Sfn
(
ソースを閲覧
)
テンプレート:Vanc
(
ソースを閲覧
)
テンプレート:脚注ヘルプ
(
ソースを閲覧
)
テンプレート:読み仮名
(
ソースを閲覧
)
2の補数
に戻る。
ナビゲーション メニュー
個人用ツール
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
ソースを閲覧
履歴表示
その他
検索
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
特別ページ
ツール
リンク元
関連ページの更新状況
ページ情報