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이 나오는 것을 확인하였는데 왜 이러한 연산의 결과가 나오는지 알고 싶습니다!!

댓글을 작성하려면 로그인해야 합니다.