공부 기록

C++ 백준 12813번

by 너나나

백준 12813번 www.acmicpc.net/problem/12813

 

12813번: 이진수 연산

총 100,000 비트로 이루어진 이진수 A와 B가 주어진다. 이때, A & B, A | B, A ^ B, ~A, ~B를 한 값을 출력하는 프로그램을 작성하시오.

www.acmicpc.net

문제 : 총 100,000 비트로 이루어진 이진수 A와 B가 주어진다. 이때, A & B, A | B, A ^ B, ~A, ~B를 한 값을 출력하는 프로그램을 작성하시오.

 

비트 연산에 대해서 이해만 하면 된다!!

&(AND)는 둘 다 1일 때 1

|(OR)은 하나만 1이면 1

^(XOR)은 둘이 다른 수일 때 1(정확하게는 1이 홀수개일 때 1이지만 여기서는 두 개만 비교하니까 이렇게 표현했다)

~는 모든 비트를 반전시킨다. 그러니까 1 -> 0, 0 -> 1이 된다!!

 

#include<iostream>
#include<cstring>
using namespace std;

char a[100001];
char b[100001];
int main() {
	cin >> a >> b;
	for (int i = 0; i < strlen(a); i++) { // &
		if (a[i] == '1' && b[i] == '1')
			cout << '1';
		else cout << '0';
	}
	cout << '\n';
	for (int i = 0; i < strlen(a); i++) { // |
		if (a[i] == '1' || b[i] == '1')
			cout << '1';
		else cout << '0';
	}
	cout << '\n';
	for (int i = 0; i < strlen(a); i++) { // ^
		if (a[i] != b[i])
			cout << '1';
		else cout << '0';
	}
	cout << '\n';
	for (int i = 0; i < strlen(a); i++) { // ~
		if (a[i] == '1')
			cout << '0';
		else cout << '1';
	}
	cout << '\n';
	for (int i = 0; i < strlen(a); i++) { // ~
		if (b[i] == '1')
			cout << '0';
		else cout << '1';
	}
	cout << '\n';
}

'study > 알고리즘' 카테고리의 다른 글

C++ 백준 10815번  (0) 2021.02.24
C++ 백준 1202번  (0) 2021.02.24
C++ 백준 2138번  (0) 2021.02.16
C++ 백준 1080번  (0) 2021.02.16
C++ 백준 11047번  (0) 2021.02.15

블로그의 정보

공부 기록

너나나

활동하기