1322번 - X와 K
숏코딩 목적으로 좀 변태같이 풀고 있었습니다.
먼저 0으로 채워진 문자열을 만들고, x에 해당하는 비트를 강제로 0으로 채운 후, 나머지를 k의 비트로 채워넣는 방식입니다.
입력이 아주 클 경우를 대비해 64비트를 저장할 수 있게 했고, 문자열을 long long int로 변환할 수 있게 strtoll함수까지 썼는데 문제는 1번 출력 결과와 2번 출력 결과가 다릅니다.
5 2147483647를 입력했을 경우, 결과값은
0000000000000000000000000000000111111111111111111111111111111010 12884901882 -6
으로, 비트 자체는 원하는 대로 나오는데 값이 다른 게 이해가 안되네요.
그리고 strtoll자체의 출력값도 뭔가 이상하고요.
strtol은 정상작동하는데 이거 이유가 뭔가요..
댓글을 작성하려면 로그인해야 합니다.
© 2026 All Rights Reserved. 주식회사 스타트링크 | 서비스 약관 | 개인정보 보호 | 결제 이용 약관 | 도움말 | 광고 문의 | 업데이트 노트 | 이슈 | TODO
한국어 | English (Beta)
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル
kyma123 10년 전 0
숏코딩 목적으로 좀 변태같이 풀고 있었습니다.
먼저 0으로 채워진 문자열을 만들고, x에 해당하는 비트를 강제로 0으로 채운 후, 나머지를 k의 비트로 채워넣는 방식입니다.
입력이 아주 클 경우를 대비해 64비트를 저장할 수 있게 했고, 문자열을 long long int로 변환할 수 있게 strtoll함수까지 썼는데 문제는 1번 출력 결과와 2번 출력 결과가 다릅니다.
5 2147483647를 입력했을 경우, 결과값은
으로, 비트 자체는 원하는 대로 나오는데 값이 다른 게 이해가 안되네요.
그리고 strtoll자체의 출력값도 뭔가 이상하고요.
strtol은 정상작동하는데 이거 이유가 뭔가요..