1 답변
-
mask
가 2진수로10000000
부터 시작해서,01000000
,00100000
, ...00000001
까지 변하게 됩니다.매
mask
값에 대하여,num & mask
값이0
과 같은지를 비교하여, 2진수 표현의 각 자리수가1
인지 또는0
인지를 알 수 있습니다. 그래서 3항연산자의 조건에 따라0
또는1
을 찍습니다.예를 들어,
num
이7
이라면, 2진수 표현은00000111
입니다.mask
가10000000
부터00001000
까지 변하는 동안에는num & mask == 0
이란 조건은 모두 참이 됩니다. 그럼 3항연산자의 첫번째인printf("0")
이 수행됩니다. 그래서00000
까지 찍힙니다. 이후mask
가00000100
부터00000001
까지 변하는 동안은 모두 거짓이 되어서,1
을 찍게 되어, 결국00000111
이 출력되게 됩니다.num & mask ----------------------------- num 00000111 : ----------------------------- mask 10000000 : 00000000 mask 01000000 : 00000000 mask 00100000 : 00000000 mask 00010000 : 00000000 mask 00001000 : 00000000 mask 00000100 : 00000100 mask 00000010 : 00000010 mask 00000001 : 00000001
댓글 입력