[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진수를 직접 입력해 테스트해볼 수 있다.
cout << dp[0b0000111]; // 0,1,2 번 비트가 켜져있는 dp 출력해보기