[C++, C] 2진수, 8진수, 16진수 표기법

💡 2진수 표기

숫자 앞에 “0b” 를 붙인다.

int a = 0b101;  // a = 5 (1*4 + 0*2 + 1*1)
cout << a << endl;  // 5 출력

💡 2진수로 출력 (C++)

헤더파일 : #include

bitset<비트의 개수="">(출력할 변수)비트의>

char c = 2;  // char은 8비트
int i = 5;  // int는 32비트

cout << bitset<1>(c) << endl;  // 0 출력 (제대로 된 값을 알 수 없음)
cout << bitset<8>(c) << endl;  // 00000010 출력
cout << bitset<4>(i) << endl;  // 0101 출력
cout << bitset<32>(i) << endl;  // 00000000000000000000000000000101 출력

// string 이용하여 저장
string bit = bitset<8>(i).to_string();
cout << bit << endl;  // 00000101 출력

💡 8진수 표기

숫자 앞에 “0” 를 붙인다.

int a = 0107;  // a = 71 (1*64 + 0*8 + 7*1)
cout << a << endl;  // 71 출력

💡 16진수 표기

숫자 앞에 “0x” 를 붙인다.

int a = 0x3a;  // a = 58 (3*16 + 10*1)
cout << a << endl;  // 58 출력

💡 효과

  • C 언어에서 file을 open할때 다음과 같은 8진수 식을 사용하여 쉽게 mode를 표기할 수 있다.
fd = open("hello.txt", O_CREAT | O_EXCL, 0644);  // "0숫자" 는 8진수를 표기하는 방식
  • 비트마스킹을 이용한 다이나믹 프로그래밍에서는 자신의 코드가 잘 돌아가고 있는지 파악하기 힘든데,

    2진수를 직접 입력해 테스트해볼 수 있다.

    EX) 백준 가르침 비트마스킹 풀이

cout << dp[0b0000111];  // 0,1,2 번 비트가 켜져있는 dp 출력해보기