dポイントプレゼントキャンペーン実施中!

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の補数の求め方は分かるのですが、以上の問題になると、とたんに解けなくなります。

どなたか教えていただけませんでしょうか。

A 回答 (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>
    • good
    • 0
この回答へのお礼

Javaでのプログラミング例ありがとうございます!

手を動かしてみる、計算してみる、といいですね。
お世話になりました。

ありがとうございました。

お礼日時:2006/04/16 13:20

>マイナスの数は、2の補数で表します。


>0と1を反転させたものに、1を足します。

自分で答えを書いているのでは?

>論理計算も、論理積、論理和、排他的論理和は理解しています。

本当に理解できているのでしょうか?

>どなたか教えていただけませんでしょうか

論理演算を理解していて、2の補数の求め方を知っていて、何を教えて欲しいのでしょうか?

一つ一つ、実際にどの様な数値になるか、試してみれば理解できるのでは?
    • good
    • 0
この回答へのお礼

すみませんでした。
自分での計算が間違っていました。

今、計算して理解しました。

EORをとって、0001を加えるのですね。

ありがとうございました。

お礼日時:2006/04/16 13:18

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