C++:: bitset 헤더를 통한 이진수 변환

jahlee·2023년 2월 22일
0

개인 공부

목록 보기
7/23

bitset<표현하고 싶은 자릿수> <변수명>(변환하고 싶은 10진수)
.to_string 을 통해 스트링 문자열로 반환도 가능하다.
자체적으로 함수도 만들어 보았다.

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

int pow(int n)// bit_shift함수와 동일
{
    int ans = 1;
    while(n--)
        ans *= 2;
    return ans;
}

int bit_shift(int n)// pow와 동일
{
    return ((1<<n));
}

void func(int n)
{
    string s;

    int len = 1;
    while (pow(len)-1 < n) len++;//2진법일때의 길이
    for(int i=0;i<len;i++)
    {
        if(pow(len-1-i)<=n)//2^(len-1-i)보다 크거나 같다면
        {
            n -= pow(len-1-i);//빼주고
            s.push_back('1');//1
        }
        else
            s.push_back('0');//아니면 0
    }
    cout << s << "\n";
}

int main()
{
	// bitset 사용
    bitset<10> test(8);
    cout << test << "\n";
    string binary = bitset<4>(8).to_string();
    cout << binary << "\n";
    // 자체 함수 사용
    func(3);//11
    func(4);//100
    func(7);//111
    func(8);//1000
    return 0;
}

0개의 댓글