取反!和按位取反~的區別

-柚子皮-發表於2014-07-03

http://blog.csdn.net/pipisorry/article/details/36517411

按位取反“~”:按位取反1變0,0變1

邏輯非“!”:邏輯取反, false變true,true變false,在C中,只要不是0就是真

------------------------------------------------------------------------------------------------------------------------------

所以
!5值是0
~按位取反
5二進位制00000101,取反11111010,代表-6
所以~5值-6

~是按位取反,例如整數3,二進位制形式是
00000000000000000000000000000011,按位取反後就是
11111111111111111111111111111100

!是邏輯否,一個非0數取否之後就是0,上面的3,用!之後就是0

所有的不是0的數用!操作後都是0

只有當運算元等於0xFFFFFFFF的,用!和~的結果值才是一樣的


所有正整數的按位取反是其本身+1的負數

所有負整數的按位取反是其本身+1的絕對值

零的按位取反是 -1


ref:

http://blog.csdn.net/pipisorry/article/details/36517411

http://blog.csdn.net/xiexievv/article/details/8124108



相關文章