LoginSignup
85
78

More than 5 years have passed since last update.

「2の補数」「1の補数」について覚書

Last updated at Posted at 2014-08-23

勉強したつもりなのに、
なぜかいつもいつも忘れたり混同したりしてしまう
「2の補数」「1の補数」について。

基数の補数、減基数の補数

基数の補数

足すと桁上がりする数のうち最小の数。

例:10進法(基数=10)の場合

 3 の補数は 7
 35 の補数は 65
 358 の補数は 642

減基数の補数

足しても桁上がりしない数のうち最大の数。

例:10進法(基数=10)の場合

 3 の減基数の補数は 6
 35 の減基数の補数は 64
 358 の減基数の補数は 641

補数とは 【 complement 】 - 意味/解説/説明/定義 : IT用語辞典
http://e-words.jp/w/E8A39CE695B0.html

補数の定義

b進法において、自然数aを表現するのに必要な最小の桁数をnとしたとき、
b^n - a を、b進法におけるaに対する基数の補数(bの補数)
b^n - a - 1 を、b進法におけるaに対する減基数の補数(b-1の補数)

補数 - Wikipedia
http://ja.wikipedia.org/wiki/%E8%A3%9C%E6%95%B0

2進数における1の補数、2の補数

都合上、減基数の補数→基数の補数、と、上記10進数の補数とは逆の順番で説明する。

1の補数

 「足しても桁上がりしない数のうち最大の数」は
 足した後で、0になっていた桁が全て1になるような数。
 これは単純にビット反転した数。

 2進法で100(4)の1の補数は011(3)
 1001(9)の1の補数は0110(6)

2の補数

ビット反転した数に1を足し、桁上がりさせたもの。

 2進法で100(4)の2の補数は100(4)
 1001(9)の2の補数は0111(7)

1の補数、2の補数を混同してしまう

どうも混同してしまうので、自分なりの覚え方を考えた。
数学的に正しいかはともかく、自分はこう覚えることにした。

1の補数
 →「1」は「2」より少ない
 →少ないからギリギリ桁上がりしない
 →ビット反転

2の補数
 →「2」は「1」に1を加算した数
 →1の補数に1を加算した数
 →ビット反転した数に1を加算した数

補数の利用例

ある整数aに、別の整数bの2の補数を加算した数を求め、
その桁上がりを無視すると、
ある整数aから、整数bを減算した数になる。

一般的なプロセッサでは、
ある整数の負の数の表現を、2の補数としている。
補数を使う利点は、減算が加算で実現できること。
つまり、加算器だけで構成できること。

2の補数 - Wikipedia
http://ja.wikipedia.org/wiki/2%E3%81%AE%E8%A3%9C%E6%95%B0

1週間で学ぶIT基礎の基礎 - コンピュータにおける「データ表現」の基礎(第2回):ITpro >http://itpro.nikkeibp.co.jp/members/ITPro/ITBASIC/20010719/2/

85
78
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
85
78