プロが教えるわが家の防犯対策術!

2進数表記で「11001101」の2の補数を教えてください。
何しろ文系なのでさっぱり分かりません。よろしくお願いします♪

A 回答 (4件)

補数の定義は、  [整数部の桁数がpであるd進数のある数Nに対するdの補数をN(d)、d-1の補数をN(d-1)とすると N(d)=d^p-N(d^p=基準になる数) N(d-1)=(d^p-1)-N(d^p=基準になる数) が成り立つ] というものです。

2の補数を求めるにはdに2、Nに11001101を代入。整数部の桁数は8桁のためp=8であるため、基準になる数は2^8です。これは2進数で表すと100000000となります。定義式より、11001101(2)〈11001101の2の補数〉=100000000(2)〈基準になる数〉-11001101(2)=00110011(2)となります。これが答えです。

機械的に2の補数を求めることもできます。「11001101」の1と0をひっくり返します。そうすると「00110010」になりますね。(これが1の補数です。) これに2進数の1を加えると2の補数になります。00110010+1=00110011が11001101の2の補数です。


定義から2の補数を求めるのは難しいので、機械的に解くほうが簡単です。
    • good
    • 0

#3,akino4さんのご回答の例を一つ書いてみます。



「01010010」の2の補数は、
1:0と1を反転する。 → 10101101
2:1を足す。 → 10101110

ちなみに、これはコンピュータの内部で符号付の整数を表すときに使われる手法ですね。
    • good
    • 0

えっとコンピュータの授業でその2の補数をやっているのならば


ビットを(0と1を)反転して1を足すってのが教科書的には
正解だと思いますよ。正の数でも負の数でもいっしょです。
理屈は二進数でカウントアップしている時計の文字盤みたいなのを
想像してみてください、ま反対に行けば、負の数になるはずだけど0なんていう
正とも負ともとれない数字があるせいで1足さなきゃならないって感じっす。
    • good
    • 0

2の補数表現での「11001101」は10進数でいくつなのか?


という質問でよろしいのでしょうか。

そうだという仮定で回答します。

まず、最上位ビット(左端)をチェックします。
  「11001101」の最上位ビットは1
これにより、負の数ということになりますので、次の手順で換算します。
各ビット(2進数の各桁)を反転させます。
  「11001101」→「00110010」
これを10進表記に直します。
 「00110010」=2^5+2^4+2^1=50
これに1を加えます。
  50+1=51
これが絶対値になりますので、答えは「-51」になります。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!