저는 CTCI의 비트 조작과 관련된 첫 번째 문제를 해결하기 위해 노력해 왔으며 작성자가 최종 솔루션에서 정확하게 마스크를 어떻게 작성했는지 파악할 수 없습니다. 누군가 "int left", "int right"및 "int mask"에 대한 계산을 설명 할 수 있습니까? 그가 제공 한 예를 위해이 선들이 구체적으로 계산하는 것을 보는 것은 좋을 것입니다.비트 작업 코딩 인터뷰 크래킹
질문 : 두 개의 32 비트 숫자 N과 M과 두 개의 비트 위치 i와 j가 제공됩니다. 메서드를 작성하여 N에서 i와 j 사이의 모든 비트를 M과 동일하게 설정합니다 (예 : M은N의 하위 문자열이되고 j에서 시작). 예 : 입력 : N = 10000000000, M = 10101, I = 2, J = 6 출력 : N = 10001010100
public static int updateBits(int n, int m, int i, int j) {
int max = ~0; /* All 1’s */
// 1’s through position j, then 0’s
int left = max - ((1 << j) - 1);
// 1’s after position i
int right = ((1 << i) - 1);
// 1’s, with 0s between i and j
int mask = left | right;
// Clear i through j, then put m in there
return (n & mask) | (m << i);
}