※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 24389번 문제인 2의 보수이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/24389
24389번: 2의 보수
컴퓨터는 뺄셈을 처리할 때 내부적으로 2의 보수를 사용한다. 어떤 수의 2의 보수는 해당하는 숫자의 모든 비트를 반전시킨 뒤, 1을 더해 만들 수 있다. 이때, 32비트 기준으로 처음 표현했던 수와
www.acmicpc.net
C의 정수자료형에서 1 이상의 자연수 N의 2의 보수는 -N과 같다.
int로 나타나는 N과 -N, 즉 32비트 범위에서의 N과 -N의 서로 다른 비트의 수를 세어 그 개수를 출력해주자.
아래는 제출한 소스코드이다.
#include <iostream>
using namespace std;
typedef long long ll;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
ll N; cin >> N;
ll M = -N;
int cnt = 0;
for (int i = 0; i < 32; i++) {
if ((M & 1) != (N & 1)) cnt++;
N >>= 1, M >>= 1;
}
cout << cnt;
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 16650 // C++] Counting Stairs (0) | 2022.05.09 |
---|---|
[BOJ 7562 // C++] 나이트의 이동 (0) | 2022.05.08 |
[BOJ 20867 // C++] Rulltrappa (0) | 2022.05.08 |
[BOJ 14940 // C++] 쉬운 최단거리 (0) | 2022.05.08 |
[BOJ 24807 // C++] Math Homework (0) | 2022.05.08 |