當x = 1時 應該怎樣 ! x | x
應該是? 我真的很困惑,因爲我做了它: x = 1 = 01二進制, !x = 10
!x | x
= 11 = 3in十進制。按位C操作
但它應該是1(即使嘗試將十六進制(長篇的東西是什麼,但我學習作爲一個本科),我得到-1)
當x = 1時 應該怎樣 ! x | x
應該是? 我真的很困惑,因爲我做了它: x = 1 = 01二進制, !x = 10
!x | x
= 11 = 3in十進制。按位C操作
但它應該是1(即使嘗試將十六進制(長篇的東西是什麼,但我學習作爲一個本科),我得到-1)
的!
是邏輯否定運算符。如果你給它非零的東西,它會讓你回零。如果你給它一個零它給你回1.
所以
!x | x
=> !1 | 1
=> 0 | 1
=> 1
注意這是怎麼從按位否定操作符,~
不同。如果您曾使用這種替代!
,事情會是這樣制定出(假設8位值,則可以擴展到32或64或其他):
~x | x
=> ~1 | 1
=> 11111110 | 00000001
=> 11111111
=> -1
這一切都歸結到理解的差異在!
和~
之間。這並不明顯;這只是你必須習慣的。正如提醒
!7 = !23423523 = !46 = !(-200) = !1 = 0
對於任何非零x
,!x = 0
。就是這樣。 C背後的想法是將0視爲假,其他任何事情都視爲真。所以,由於像70343個或1計數爲真,一個值施加到!
它給出假的,或0
的!
操作者爲邏輯否定,!x
相當於x == 0
爲數值和指針類型。
!x
有類型int
和1
如果x
一個值進行比較等於0
並且具有用於所有其它情況下的0
值。