[c++] int to binary? binary to int?

윤인경·2023년 11월 9일
0

C++

목록 보기
1/1

int를 binary로 변환하여 사용하여 연산을 진행한 후 다시 int로 변환하는 문제들을 많이 만났다. 특히 bit로 연산을 하는 경우도 많기 때문에 알아둘 필요성이 있다고 생각했다.

int to binary

2가지 방법 존재

1. bitset 컨테이너
선언 시 상수 사이즈 입력으로 임의의 넉넉한 사이즈로 생성
2. >> bit 연산
string의 덧셈 연산이 빈번하게 발생

bitset

#include <iostream>
#include <string>
#include <bitset> # bitset 추가

using namespace std;

int main() {
	int num = 12345;
    
    const int n = 100; 
    # 1. 변환방법 1
    bitset<n> bs(num);
    string s = bs.to_string();
    
    # 2. 변환방법 2
    string binary = bitset<n> (num).to_string();
    
    return 0;
}

결과 -> 11000000111001

>> bit 연산 사용

#include <iostream>
#include <string>
#include <bitset>

using namespace std;

string to_binary(int num) {
	string s = "";
	while (num > 0) {
		if (num % 2 == 1) s = "1" + s;
		else s = "0" + s;
		num >>= 1;
	}
	return s;
}

int main(){
	int num = 12345;
    
    string s = to_binary(num);
    
    return 0;
}

binary to int

3가지 방법 존재

1. stoi()
2. bitset 컨테이너
선언 시 상수 사이즈 입력으로 임의의 넉넉한 사이즈로 생성

stoi()

정수형
int stoi(const string& str, size_t idx = 0, int base = 10)
long stol(const string& str, size_t
idx = 0, int base = 10)

3번째 인자가 진수 표현이므로 2를 넣으면 2진수를 int로 변환한다.

#include <iostream>
#include <string>

using namespace std;

int main() {
	string s = "0011000000111001";
    
    int num = stoi(s, nullptr, 2);
    
    return 0;
}

bitset컨테이너

#include <iostream>
#include <string>
#include <bitset>
using namespace std;

int main() {
	string s = "0011000000111001";
	
	/* binart string to long */
	cout << "이진수 문자열 " << s << " 을 정수로\n";
	bitset<100> bs2(s);
	cout << bs2.to_ulong() << "\n";
	
	return 0;
}
profile
코딩 공부 및 프로젝트 정리

0개의 댓글