トピック

可笑しい

NOTなんですが、普通結果としては2になるはずなんですがなぜか-6になります。どうしてでしょうか
0そうだね
プレイ済み
返信[1]
親投稿
まず何故2になると思うのか、その根拠を書いてから聞いた方がいいかもですよ。
2そうだね
プレイ済み
返信[2]
親投稿
おちゃめ ochame_nako
私の予想では☆くもき☆さんは 5は2進数で101 NOT(5)はビット反転して010 これは10進数では2 という感じになっていると思います。
3そうだね
プレイ済み
返信[3]
親投稿
おちゃめ ochame_nako
プチコン3号では32bit整数で処理されています。 したがって、5は2進数では 0000000000000000000000000000101となります。(32桁の2進数) NOT(5)はビット反転して 1111111111111111111111111111010となります。 これは10進数では-6になります。
5そうだね
プレイ済み
返信[4]
親投稿
Hanzo rzsense
おちゃめさんがおっしゃるところの111111111111111111111111111111010が、なぜマイナス6になるのか、お分かりですか? 2進数の下位ビットから数えてn番目のビットは、2のn-1乗の数を表すことはご存じと思います。 では、最上位ビット(最下位ビットから数えて32番目のビット)は、2の31乗を表すかと言うと、そうではなく、2の31乗をマイナスした値になります。マイナスなのは最上位ビットだけで、あとは普通にプラスです。 面倒かも知れませんが、これらを全て足してやれば、マイナス6になるのがお分かりいただけるかと。 結論を言えば、NOT N==-1-N です。
3そうだね
プレイ済み
返信[5]
親投稿
だにえる haru2016nen
「2の補数」ってやつだっけ
2そうだね
プレイ済み
返信[6]
親投稿
ほとんどの人がちゃんと解説しているので、そういうことなんですよね。 質問前でも PRINT BIN$(-6) を表示してみれば、なんとなく納得できたかも?
1そうだね
プレイ済み
返信[7]
親投稿
ちゃんとひっくり返ってたんですね。ありがとうございました。
1そうだね
プレイ済み