ア | イ | ウ | エ | オ |
カ | キ | ク | ケ | コ |
サ | シ | ス | セ | ソ |
タ | チ | ツ | テ | ト |
ナ | ニ | ヌ | ネ | ノ |
ハ | ヒ | フ | ヘ | ホ |
マ | ミ | ム | メ | モ |
ヤ | ユ | ヨ | ||
ラ | リ | ル | レ | ロ |
ワ | ヰ | ヴ | ヱ | ヲ |
ン |
A | B | C | D | E |
F | G | H | I | J |
K | L | M | N | O |
P | Q | R | S | T |
U | V | W | X | Y |
Z | 数字 | 記号 |
2進数における負の数の表わし方の一つで、すべてのビットを反転させたもののこと。つまり、正数表現に対し、単純に論理否定を取ったものである。
例えば−1を例にする。16進数4桁で+1は0x0001なので、これを論理否定すると0xFFFEとなる。
つまり1の補数の世界では0xFFFEが−1を意味することになる。
1の補数の世界では、+0の否定として−0が存在する点も重要である。
16進数4桁で0は0x0000なので、これを否定すると0xFFFFとなる。+0も−0も同じ値と考えれば、0の表現に0x0000と0xFFFFの二つが存在するということになる。
計算する場合の盲点となりがちなので注意が必要である。
1の補数の加算は1の補数和と呼ばれ、左の桁への桁上がりを一番右に足し込むことで行なう。
一例として0xFFFFと0x1234の和(1の補数和)を考える。0xFFFF+0x1234→0x11233となるが、16ビットを超えた部分を右側に加算するので、結果は0x1234となり、元と値は変わらない。なぜなら1の補数の世界では0xFFFFは0を意味するからである。
1の補数の世界では−2(0xFFFD)、−1(0xFFFE)、−0(0xFFFF)、+0(0x0000)、+1(0x0001)、+2(0x0002)…のようになるため、0xFFFFに1足して桁上がりした場合、0x0000(つまり+0)を経由する必要はなく、0x0001になるべきである。そのために、桁上がりの桁を右側に足し込むことになる。
コメントなどを投稿するフォームは、日本語対応時のみ表示されます