1322번 - X와 K
숏코딩 목적으로 좀 변태같이 풀고 있었습니다.
먼저 0으로 채워진 문자열을 만들고, x에 해당하는 비트를 강제로 0으로 채운 후, 나머지를 k의 비트로 채워넣는 방식입니다.
입력이 아주 클 경우를 대비해 64비트를 저장할 수 있게 했고, 문자열을 long long int로 변환할 수 있게 strtoll함수까지 썼는데 문제는 1번 출력 결과와 2번 출력 결과가 다릅니다.
5 2147483647를 입력했을 경우, 결과값은
0000000000000000000000000000000111111111111111111111111111111010 12884901882 -6
으로, 비트 자체는 원하는 대로 나오는데 값이 다른 게 이해가 안되네요.
그리고 strtoll자체의 출력값도 뭔가 이상하고요.
strtol은 정상작동하는데 이거 이유가 뭔가요..
댓글을 작성하려면 로그인해야 합니다.
kyma123 8년 전
숏코딩 목적으로 좀 변태같이 풀고 있었습니다.
먼저 0으로 채워진 문자열을 만들고, x에 해당하는 비트를 강제로 0으로 채운 후, 나머지를 k의 비트로 채워넣는 방식입니다.
입력이 아주 클 경우를 대비해 64비트를 저장할 수 있게 했고, 문자열을 long long int로 변환할 수 있게 strtoll함수까지 썼는데 문제는 1번 출력 결과와 2번 출력 결과가 다릅니다.
5 2147483647를 입력했을 경우, 결과값은
으로, 비트 자체는 원하는 대로 나오는데 값이 다른 게 이해가 안되네요.
그리고 strtoll자체의 출력값도 뭔가 이상하고요.
strtol은 정상작동하는데 이거 이유가 뭔가요..