• 締切済み

16ビットの2進数の、2の補数を求める操作

16ビットの2進数の、2の補数を求める操作として、以下のうち、適当なものはどれなのか、わかりません。 ・(FFFF)16とANDをとる ・(0001)16とORをとる ・(FFFF)16とEORをとる ・(0001)16とORをとったあと、(0001)16を加える ・(FFFF)16とEORをとったあと、(0001)16を加える マイナスの数は、2の補数で表します。 0と1を反転させたものに、1を足します。 また、論理計算も、論理積、論理和、排他的論理和は理解しています。 2の補数の求め方は分かるのですが、以上の問題になると、とたんに解けなくなります。 どなたか教えていただけませんでしょうか。

みんなの回答

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.2

頭で解っていても、ピンとこない場合は、手を動かしてみると良いです。 という事で、適当なプログラミング言語で実際に計算させるとか。 一例として、クライアントサイドJavaScriptで実験: <script language="JavaScript"> function i2b( x ){ var s = '(' + x + ')', b = ''; for ( var i = 0; i < 4; i++ ){ b = ( x & 1 ) + b; x >>= 1; } return b + s; } function t( title, v1, v2 ){ alert( title + ':' + i2b(v1) + '->' + i2b(v2) ); } var a = 5; t( 'and',a,(a & 0xF) ); t( 'or ',a,(a | 0xF) ); t( 'eor',a,(a ^ 0xF) ); t( 'or1',a,(a | 0xF)+1 ); t( 'eo1',a,(a ^ 0xF)+1 ); </script>

IRAM
質問者

お礼

Javaでのプログラミング例ありがとうございます! 手を動かしてみる、計算してみる、といいですね。 お世話になりました。 ありがとうございました。

回答No.1

>マイナスの数は、2の補数で表します。 >0と1を反転させたものに、1を足します。 自分で答えを書いているのでは? >論理計算も、論理積、論理和、排他的論理和は理解しています。 本当に理解できているのでしょうか? >どなたか教えていただけませんでしょうか 論理演算を理解していて、2の補数の求め方を知っていて、何を教えて欲しいのでしょうか? 一つ一つ、実際にどの様な数値になるか、試してみれば理解できるのでは?

IRAM
質問者

お礼

すみませんでした。 自分での計算が間違っていました。 今、計算して理解しました。 EORをとって、0001を加えるのですね。 ありがとうございました。

関連するQ&A