1の補数のソースを表示
←
1の補数
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
{{出典の明記|date=2023年3月30日 (木) 05:11 (UTC)}} {{読み仮名|'''1の補数'''|いちのほすう|{{Lang-en-short|ones' complement}}}}は、{{math|2}} を[[位取り記数法]]の基数とした場合の[[補数|減基数の補数]]である{{sfn|JIS X 0005:2002|2002|loc=05.08.07 1の補数}}{{sfn|ISO/IEC 2382:2015|2015|loc=2. Terms and definition. 2121103. ones 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}}。すなわち、[[整数]] {{mvar|x}} との[[加法|和]]が {{math|2}} の[[冪乗]] {{math|2{{sup|''n''}}}} から {{math|1}} を引いた数に等しい数 {{math|1=''x''{{sub|c}} = (2{{sup|''n''}} − 1) − ''x''}} のことをいう(例:{{math|1=2{{sup|4}} − 1 = 15}} について、{{math|4}} に対する1の補数は {{math|11}})。 数 {{mvar|x}} とその1の補数 {{math|''x''{{sub|c}}}} を[[二進法]]で表せば、1の補数 {{math|''x''{{sub|c}}}} は {{mvar|x}} との和が {{mvar|n}} 桁の二進数として表せる最大の数となる数といえる(例:{{math|1=2{{sup|4}} − 1 = 1111{{sub|2}}}} について{{efn2|下付きの添字は[[位取り記数法]]の基数を表す。}}、{{math|1=4{{sub|10}} = 0100{{sub|2}}}} の1の補数は {{math|1=11{{sub|10}} = 1011{{sub|2}}}})。 二進法において、ある数の1の補数を[[反数]]と見なせば、決まった桁数の二進数をそれぞれ[[正の数と負の数|非負]]の数と負の数に対応づけられる([[#負の数の表現]])。 1の補数表現は[[コンピュータ]]の分野において、固定長の[[符号]]付きの[[整数型]]などの表現として利用されることがある。 == 負の数の表現 == 1の補数を用いて[[二進法|二進数]]を[[正の数と負の数|負]]の[[整数]]に対応づけられる。1の補数の[[定義]]より、{{mvar|n}} 桁の二進数 {{mvar|x}} とその補数 {{math|''x''{{sub|c}}}} は以下の関係を満たす: :<math> x + x_\mathrm{c} = 2^n - 1 \,. </math> 右辺の {{math|2{{sup|''n''}} − 1}} の[[倍数]]を {{math|0}} と同一視すれば、上記の関係は以下のように解釈できる: :<math> x + x_\mathrm{c} \equiv 0 \,. </math> これは {{mvar|x}} の補数 {{math|''x''{{sub|c}}}} を {{mvar|x}} の[[反数]] {{math|−''x''}} と見なすことを意味する。 :<math> y - x \equiv y + x_\mathrm{c} \,. </math> == 1の補数表現 == [[#負の数の表現]]節の方法で[[反数]]および[[減法]]が[[定義]]されているとする。更に {{math|0}} から {{math|2{{sup|''n''−1}} − 1}} までの非負整数をそのまま通常の[[位取り記数法]]における二進表示、 : <math>0_2, 1_{2}, {10}_2, \dots, \underbrace{011\cdots11}_{n \text{桁}}{}_{2}</math> に対応づければ、これらの数の[[補数]]として[[正の数と負の数|負]]の[[整数]]に対する1の補数表現が得られる。 具体例として、{{math|1=''n'' = 4}} 桁の二進数における対応表を以下に示す: {| class="wikitable" style="text-align:center" |+ {{math|2{{sup|4}}}} についての1の補数表現における、二進数と対応する整数の一覧 |- ! 対応する整数 !! 二進数 !! 対応する整数 !! 二進数 |- | {{math|0}} || {{math|0000{{sub|2}}}} | {{math|0}} || {{math|1111{{sub|2}}}} |- | {{math|1}} || {{math|0001{{sub|2}}}} | {{math|−1}} || {{math|1110{{sub|2}}}} |- | {{math|2}} || {{math|0010{{sub|2}}}} | {{math|−2}} || {{math|1101{{sub|2}}}} |- | {{math|3}} || {{math|0011{{sub|2}}}} | {{math|−3}} || {{math|1100{{sub|2}}}} |- | {{math|4}} || {{math|0100{{sub|2}}}} | {{math|−4}} || {{math|1011{{sub|2}}}} |- | {{math|5}} || {{math|0101{{sub|2}}}} | {{math|−5}} || {{math|1010{{sub|2}}}} |- | {{math|6}} || {{math|0110{{sub|2}}}} | {{math|−6}} || {{math|1001{{sub|2}}}} |- | {{math|7}} || {{math|0111{{sub|2}}}} | {{math|−7}} || {{math|1000{{sub|2}}}} |} 結局、{{mvar|n}} 桁の二進数の {{math|1=''k'' + 1}} 桁目の値を {{math|''b{{sub|k}}'' ∈ {{mset|0, 1}}}} とすれば、1の補数表現は以下のように表せる: : <math> {b_{n-1} b_{n-2} \cdots b_1 b_0}_{(2)} \mapsto \sum_{k=0}^{n-2} {b_k \cdot 2^k} - b_{n-1}\cdot (2^{n-1} - 1) \,. </math> === 1の補数表現における演算 === 1の補数で表される数は、対応する二進数表示の最上位の値 {{math|''b''{{sub|''n''−1}}}} が {{math|0}} なら負でない値を取り、{{math|1}} なら正でない値を取る。 1の補数表現において、二進数を[[ビット]]列とみなせば、符号の反転はビット列 {{mvar|x}} の[[ビット演算#NOT|ビットを反転]]{{efn2|ここで[[ビット演算#NOT|ビット反転]]とは各ビットに対する否定演算を指す。すなわち入力が {{math|0}} なら {{math|1}} を出力し、入力が {{math|1}} なら {{math|0}} を出力する。}}することによって行える。{{mvar|x}} とそれをビット反転させた {{math|{{sup|f}}''x''}} は常に以下を満たす: : <math> x + {}^\mathrm{f}x \equiv 0 \,. </math> 上記より、{{mvar|x}} の1の補数は {{math|1=''x''{{sub|c}} = {{sup|f}}''x''}} と表せる。従って[[減法]]は、 :<math> y - x \equiv y + {}^\mathrm{f}x </math> と書き換えられる。ビット反転が反数に対応することから、{{math|0}} は {{math|000...00{{sub|2}}}} と {{math|111...11{{sub|2}}}} の2つの表現方法を持つ。 == 脚注 == {{脚注ヘルプ}} === 注釈 === {{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}} }} == 関連項目 == * [[符号付数値表現]] * [[コンピュータの数値表現]] * [[補数]] * [[2の補数]] {{DEFAULTSORT:いちのほすう}} [[Category:コンピュータの算術]] [[Category:コンピュータのデータ]] [[Category:プログラミング]] [[Category:数の表現]] [[Category:数学に関する記事|/1いちのほすう]]
このページで使用されているテンプレート:
テンプレート:Cite book
(
ソースを閲覧
)
テンプレート:Efn2
(
ソースを閲覧
)
テンプレート:Math
(
ソースを閲覧
)
テンプレート:Mvar
(
ソースを閲覧
)
テンプレート:Notelist2
(
ソースを閲覧
)
テンプレート:Reflist
(
ソースを閲覧
)
テンプレート:Sfn
(
ソースを閲覧
)
テンプレート:出典の明記
(
ソースを閲覧
)
テンプレート:脚注ヘルプ
(
ソースを閲覧
)
テンプレート:読み仮名
(
ソースを閲覧
)
1の補数
に戻る。
ナビゲーション メニュー
個人用ツール
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
ソースを閲覧
履歴表示
その他
検索
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
特別ページ
ツール
リンク元
関連ページの更新状況
ページ情報