※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 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

+ Recent posts