Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

勉強したつもりなのに、
なぜかいつもいつも忘れたり混同したりしてしまう
「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/

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away