x = 1 일 때 무엇을해야합니까 ! x | x
해야합니까? 나는 그것을 한 것처럼 정말로 혼란 스럽다. x = 1 = 01 (이진수), !x = 10
= 11 = 10 진수.비트 단위 C 연산
그러나 그것은해야 1. (심지어 긴 진수 (뭔가를하려고 시도하지만 대학원에로 배우고 무엇을), 내가 가진 -1)
x = 1 일 때 무엇을해야합니까 ! x | x
해야합니까? 나는 그것을 한 것처럼 정말로 혼란 스럽다. x = 1 = 01 (이진수), !x = 10
= 11 = 10 진수.비트 단위 C 연산
그러나 그것은해야 1. (심지어 긴 진수 (뭔가를하려고 시도하지만 대학원에로 배우고 무엇을), 내가 가진 -1)
!
는 논리적 부정 연산자입니다. 0이 아닌 값을 주면 0을 돌려줍니다. 당신이 그것을 0을주는 경우에 당신이이 비트 부정 연산자, ~
다른 방법 위로 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을 거짓으로 취하고 다른 것은 참이라고 가정합니다. 따라서, 진정한로서 70,343 또는 1 카운트와 같은 값이 그것에 !
인가 이후 false를 제공하거나 0
!
연산자 !x
숫자 포인터 유형 모두 x == 0
동등, 논리 부정위한 것이다.
!x
은 int
입력 가지며 1
경우 x
의 값 0
동등한 비교하여 다른 경우에 0
의 값을 갖는다.