C言語なら俺に聞け(入門編)Part 126
■ このスレッドは過去ログ倉庫に格納されています
0625デフォルトの名無しさん
2014/10/18(土) 22:39:50.56ID:1p6XRioVこの手の話は「情報論基礎」みたい感じで軽い一冊としてまとまってそう、私も具体的にこれ、と挙げることはできないけど
a を二進数表現としたとき、a の 1 である桁を 0 に換え、a の 0 である桁を 1 に換えてできた数を a の補数と名前をつけることにする。
例:十進数表記の 6 は 二進数表記では 110、よって6 の補数は二進数で 001 、十進数で 1 とする。
例:14 の補数は 17, 221 の補数は 34, 2438 の補数は 1657,
a の補数を ~a とすると上記の補数の決め方により a + ~a = 111111......1111(二進数ですべての桁が1になる数)となる。
なぜならば、a のある桁が1 ならば対応する~a のその桁は 0 になるわけで、両方ともが 1 、あるいは両方ともが0 になることは、補数の決め方を守る限り起こらない。
ここでもう一つの約束ごと、11111...1111 というニ進数で表すとすべての桁が 1 になる数を「-1」を表すこととする。
この二つの約束事を式で表すと
a + ~a = -1
a = -~a - 1
-a = ~a + 1
以上のとおりです。
■ このスレッドは過去ログ倉庫に格納されています