kyma123   1년 전

숏코딩 목적으로 좀 변태같이 풀고 있었습니다.

먼저 0으로 채워진 문자열을 만들고, x에 해당하는 비트를 강제로 0으로 채운 후, 나머지를 k의 비트로 채워넣는 방식입니다.

입력이 아주 클 경우를 대비해 64비트를 저장할 수 있게 했고, 문자열을 long long int로 변환할 수 있게 strtoll함수까지 썼는데 문제는 1번 출력 결과와 2번 출력 결과가 다릅니다.

5 2147483647를 입력했을 경우, 결과값은

0000000000000000000000000000000111111111111111111111111111111010
12884901882
-6

으로, 비트 자체는 원하는 대로 나오는데 값이 다른 게 이해가 안되네요.

그리고 strtoll자체의 출력값도 뭔가 이상하고요.

strtol은 정상작동하는데 이거 이유가 뭔가요..

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