<개인공부>/[C++]

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

BlockDMask 2021. 2. 9. 00:30
반응형

안녕하세요. BlockDMask입니다.
C++에서 정수를 표현할 때 진수를 표현하는 방법과 자릿수를 표기하는 방법에 대해서 알아보겠습니다.

<목차>
1. 8, 16, 2진수 표기법
2. 자릿수 표기법

 

 

1. C++ 2진수, 8진수, 16진수 표기법


- C++ 2진수 표기

"0b숫자(2진수)"

2진수로 표기하는 것은 C++ 11에서부터 가능합니다.
표기하고자 하는 숫자 앞에 숫자 0과 알파벳 b "0b"를 붙이게 되면 2진수로 표기가 됩니다.

0b 뒤에 오는 숫자는 2진수로 표현된 숫자 이어야 합니다.
즉 0b1010, 0b10 등 0과 1로 이루어진 2진수 이어야 하는 것입니다.

 

 

- C++ 8진수 표기

"0숫자(8진수)"

8진수로 표기하려 하면 숫자 0을 붙이면 됩니다.
0 뒤에 오는 숫자는 8진수로 표기된 숫자 이어야 합니다.

 

- 16진수 표기

"0x숫자(16진수)"

16진수로 표기하려 한다면 숫자 0과 알파벳 x를 합쳐서 "0x"를 표현하고자 하는 숫자 앞에 붙이면 됩니다.
0x뒤에 오는 숫자는 당연하게도 16진수로 표기된 숫자 이어야 합니다.

 

바로 예제에서 확인해보시죠.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include<iostream>
using namespace std;
 
int main(void) {
    int a = 100;        // 10진수로 표현한 100
    int b = 0b01100100;    // 2진수로 표현한 100
    int c = 0144;    // 8진수로 표현한 100
    int d = 0x64;    // 16진수로 표현한 100
 
    cout << "10진수 100        : " << a << endl;
    cout << " 2진수 0b01100100 : " << b << endl;
    cout << " 8진수 0144       : " << c << endl;
    cout << "16진수 0x64       : " << d << endl;
 
    cout << endl << endl;
 
    int e = 20;        // 10진수
    //int f = 0b20;    // 2진수로 표현한 숫자인데 0, 1이 아닌 숫자가 있으므로 error
    int f = 0b1010;    // 2진수
    int g = 020;    // 8진수
    int h = 0x20;    // 16진수
 
    cout << "10진수 20     : " << e << endl;
    cout << " 2진수 0b1010 : " << f << endl;
    cout << " 8진수 020    : " << g << endl;
    cout << "16진수 0x20   : " << h << endl;
 
    return 0;
}
 
cs

C++ 2진수, 8진수 16진수 예제

10진수는 앞에 아무것도 입력하지 않고 그대로 숫자 그대로 사용하게 되면 10진수를 나타내게 됩니다.
예제를 보면 똑같이 100을 나타내는 표현인데 
10진수는 100
2진수는 0b01100100
8진수는 0144
16진수는 0x64
로 각각 표현방법이 다른 것을 확인할 수 있습니다.

 

 

2. C++ 자릿수 표기법


C++11부터 가능해진 자릿수 표기법에 대해서 간단하게 알아보겠습니다.
숫자가 길어지면 길어질수록 한 번에 자릿수가 눈에 띄지 않으니 생긴 것으로 보이네요.

특히 C++11에 long long 타입이 추가되면서 큰 숫자를 다룰일이 많아서 그런지, 이런 편리한 표기법을 추가해준 것이 아닐까요?

자릿수를 표기하는 방법

숫자 사이사이에 작은따옴표 '를 넣어주면 됩니다.

코드에는 ' 작은따옴표가 보이지만, 실제 컴파일될 때 ' 가 자동적으로 무시되기 때문에, 순전히 코드를 작성할 때 가독성을 높여주기 위해서 만들어진 것이라 보면 되겠습니다.

예제로 바로 확인해보겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<iostream>
using namespace std;
 
int main(void) {
    int num1 = 100000000;
    int num2 = 100'000'000;
    int num3 = 10000'00000;
    int num4 = 1'0'0'0'0'0'0'0'0'0;
 
    cout << "100000000   : " << num1 << endl;
    cout << "100'000'000 : " << num2 << endl;
    cout << "10000'00000   : " << num3 << endl;
    cout << "1'0'0'0'0'0'0'0'0'0 : " << num4 << endl;
 
    return 0;
}
 
cs

C++ 자릿수 표기

이렇게 긴 숫자들도C++11부터는 ' 작은따옴표를 통해서 자릿수를 쉽게 구분할 수 있게 되었습니다.

' 는 우리가 구분하기 위해 사용하는 것이기 때문에 특별한 위치 상관없이 막 집어넣을 수 있습니다.
당연하겠지만 맨 앞과 맨 뒤에 ' 작은따옴표를 쓰면 문자 같은 걸로 인식하기 때문에 맨 앞 맨 뒤를 제외하고 숫자 사이사이 아무 곳에나 넣어서 사용하면 됩니다.

 

 

오늘의 포스팅은 여기까지 입니다.
오늘은 C++11에서 2진수 표기법, 자릿수 구분법 그리고 기존 C++에 있었던 8진수 표기법과 16진수 표기법까지 알아보았습니다.
오늘도 방문해주셔서 감사합니다. 

반응형