x = 1の場合 どうすればよいですか ! x | x
? 私は実際に何をしたのかと混同しています。 x = 1 = 01、バイナリで !x = 10
= 11 = 3桁の10進数です。ビット単位のC操作
しかし、それは1でなければなりません(でも、(16進行く長い何かをしようとしたが、私が大学生として勉強)、私が得た-1)
x = 1の場合 どうすればよいですか ! x | x
? 私は実際に何をしたのかと混同しています。 x = 1 = 01、バイナリで !x = 10
= 11 = 3桁の10進数です。ビット単位のC操作
しかし、それは1でなければなりません(でも、(16進行く長い何かをしようとしたが、私が大学生として勉強)、私が得た-1)
!
論理否定演算子です。ゼロ以外のものを与えると、ゼロを返します。あなたはそれをゼロを与える場合、それはあなたが戻って、これはビット単位否定演算子、~
異なる方法1.
ので
!x | x
=> !1 | 1
=> 0 | 1
=> 1
注意を与えます。あなたの代わりに!
の本を使用していた場合、物事はこのように働いているだろう(8ビットの値を仮定して、あなたは、32または64または任意にスケールアップすることができます):
~x | x
=> ~1 | 1
=> 11111110 | 00000001
=> 11111111
=> -1
それはすべての違いを理解するまで来ます!
と~
の間です。それは明らかではない。それはあなたが慣れていなければならないものです。ただ、ゼロ以外のx
、!x = 0
のアラーム
!7 = !23423523 = !46 = !(-200) = !1 = 0
として。それがまさにそれです。その背後にある考え方は、Cは0を偽とし、それ以外のものを真とみなします。だから、真70343のまたは1カウントなどの値が、それに!
を適用すると、偽与え以来、または0
!
オペレータは!x
が数値とポインタの両方のタイプのx == 0
に相当し、論理否定のためです。
!x
はx
が0
に等しい比較し、他のすべての場合について0
の値を有する場合int
と1
の値を入力しています。