첫번째 for문은 array index n번째에 2의 n승을 저장합니다.
두번째가 문제인데, 가장 기본적으로 십진수를 이진수로 표현할 수 있어야합니다.
A는 101에 B는 1010으로 표현할 수 있습니다.
A&array[i]에서 &는 비트 AND 연산자입니다. 같은 자리에 있는 비트가 둘다 1일때 True를 반환합니다.
A는 101이고 array는 2의 제곱수를 저장하고있으니 array[0] = 1(이진수로 1), array[2] = 4(이진수로 100)에서 True입니다.
B<<i에서 <<는 비트 이동 연산자입니다. B를 i만큼 왼쪽으로 이동하라는 뜻입니다.
그럼 각각의 경우에서
i = 0일때, B<<i는 1010을 왼쪽으로 0만큼 이동시킨것이므로 그대로 1010 = 10 입니다.
i = 2일때, 1010을 왼쪽으로 2만큼 이동시키면 101000 = 40 이 됩니다.
C는 이 값들을 더한 것이므로 10+40 = 50 이 답입니다.