11723번 - 집합
BIT = (1 << 21) - 1;
cout << bitset<32>(BIT);
(1<<21) 의 연산으로 오른쪽에서 왼쪽 방향으로 22번째 자리 수에 1을 추가하고 00000000001000000000000000000000
-1을 하면 1의 보수인거는 알 것 같습니다.
그런데 왜 21번째부터 오른쪽 끝까지 00000000000111111111111111111111 이렇게 되어지는지 이해가 잘 되지 않습니다.. ㅠㅠ
그리고 -1이 아닌 다른 수 예를 들어 (1 << 21) -7 을 입력하면 00000000000111111111111111111001 이와 같은 수가 나오는데
0의 자리수를 더해보면 6이 나옵니다.
모든 수는 (1<<21)-x 에서 x의 수보다 1이 작은 수의 자리에 0이 나오는 것을 확인하였는데 왜 이러한 연산의 결과가 나오는지 알고 싶습니다!!
댓글을 작성하려면 로그인해야 합니다.
success 3년 전
BIT = (1 << 21) - 1;
cout << bitset<32>(BIT);
(1<<21) 의 연산으로 오른쪽에서 왼쪽 방향으로 22번째 자리 수에 1을 추가하고 00000000001000000000000000000000
-1을 하면 1의 보수인거는 알 것 같습니다.
그런데 왜 21번째부터 오른쪽 끝까지 00000000000111111111111111111111 이렇게 되어지는지 이해가 잘 되지 않습니다.. ㅠㅠ
그리고 -1이 아닌 다른 수 예를 들어 (1 << 21) -7 을 입력하면 00000000000111111111111111111001 이와 같은 수가 나오는데
0의 자리수를 더해보면 6이 나옵니다.
모든 수는 (1<<21)-x 에서 x의 수보다 1이 작은 수의 자리에 0이 나오는 것을 확인하였는데 왜 이러한 연산의 결과가 나오는지 알고 싶습니다!!