2016-11-25 9 views
2

私はプログラミングに新しく、いくつかの基本的なバイナリを学ぼうとしていますが、まだ分かりません。これは、NOT演算子に関するルールです。バイナリNOT(〜)演算子はどのように機能しますか?

私はこれを計算するためにwan't言うことができます:62&~29

62 = 111110 
29 = 011101 

今結果は私の知る限り理解し、このようになります。

100011 = 35 

しかし、私は、コードから得る結果は34.

私の質問は次のとおりです。最後の値はどうなっていますか?なぜ34に追加されていないのですか?

誰かが私にそれを説明してくれることを願っています:D

良い一日を!

答えて

1

~ないないオペレータである、それはビット単位の補数演算子です。

オペランドのビットパターンをとり、0ビットをすべて1ビットに変換し、1ビットをすべて0ビットに変換します。

数字に与える影響は、実装で使用される補足の慣習と、そのタイプを表すために使用されるビット数によって異なります。あなたの具体的な例では

は、62&~2934ある100010ある111110&a100010ある111110&(~011101)ある62&(~29)として評価されます。ここで私は賢明であり、aを1ビットの数のために使用しているので、ビットの数はあなたのタイプの幅に等しい。

+0

それはもっと理にかなっています。あなたの説明のためにそんなにありがとう:) –

+0

〜1は実際には2の2の補数です。 –

+0

あなたは正しい。私はその文を削除しました。 – Bathsheba

0
29 --> 011101 
not29 --> 100010 (turn 1s into 0 and vice-versa) 

62  --> 111110 
not29 --> 100010 
62&not29 --> 100010 (1 if and only if both are 1, otherwise 0) 

どのように35を取得しましたか?

+0

私は&がどのように動作しているのか本当に分からなかったので私は35を得ました。両方とも1ではないにもかかわらず0から1に変換されました。助けてくれてありがとう :) –

関連する問題