본문 바로가기
C++ 200제/코딩 IT 정보

C언어 INT, C++ INT 16비트에서 이해하기, 정수 자료형 키워드 뜻

by vicddory 2017. 8. 15.

C언어 INT, C++ INT 16비트에서 이해하기, 정수 자료형 키워드 뜻


먼저, 훑고 넘어갈 사항


1. 16 Bit = 2 Byte = 1 Word(IBM 호환, 본 포스팅은 16비트 프로세서를 기준으로 작성됨)


2. 어셈블러에서 사용되는 자료형(괄호 안은 바이트, 비트)

: byte(1-8), word(2-16), dword(4-32), qword(8-64)


3. 기본 자료형 크기

: byte - 1 Byte

: short - 2 Byte

: int - 4 Byte

: long - 4 Byte

: double - 8 Byte


C언어 INT, C++ INT


1 Word는 우측(0)에서 시작되어 좌측(15)에서 끝나는, 16개의 연속된 비트 그룹입니다.


C언어 INT[C언어 INT, C++ INT 16비트에서 이해하기]


16비트를 기준으로,


- 가장 오른쪽 비트 : 최하위 비트, 낮은 비트, LO bit, LOBIT이라 부름

- 가장 왼쪽 비트 : 최상위 비트, 높은 비트, HI bit, HIBIT라 부름


기타, 다른 비트들은 위치를 참조하여 비트1, 비트2, 비트3 등으로 부릅니다.

하나의 문장(Word)은 2바이트로 구성되므로, 


- 우측 8비트 : 최하위 바이트, 하위 바이트, LO byte, LOBYTE라 부름

- 좌측 8비트 : 최상위 바이트, 상위 바이트, HI byte, HIBYTE라 부름


2진 포맷(Binary Format)으로는 0000000000000000, 4비트씩 그룹화하면 해서 0000 0000 0000 0000으로 표현할 수 있습니다.


따라서, Word를 표현할 수 있는 최소의 2진 값은 0000 0000 0000 0000이며, Word의 최소 십진 값은 0입니다.

Word에 저장할 수 있는 16진수 값은 0x0000000000000000이며, 0x00000000, 0x0000, 0x0로도 표기가 됩니다. 이런 값들은 0x0과 같은 의미를 나타내기도 합니다.


그리고 Word로 표현할 수 있는 최대 2진 값(Binary Value)은 1111 1111 1111 1111이 됩니다.


1*215+1*214+1*213 + 1*212 + 1*211 + 1*210 + 1*29 + 1*28 + 1*27 + 1*26 + 1*25 + 1*24 + 1*23 + 1*22 + 1*21 + 1*20

= 32768 + 16384 + 8192 + 4096 + 2048 + 1024 + 512 + 256 + 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1

= 65535


만약, Word의 16진수 값이 모두 f나 F로 변환되었다면, Word가 저장할 수 있는 최대 범위를 채웠다는 의미입니다.


1111 1111 1111 1111


f f f f


= 0xffff = 0xFFFF

= 0Xffff = 0XFFFF


c++ data type int[C언어 INT, C++ INT 16비트에서 이해하기]


Application: Introducing Numeric Values


1. Microsoft Visual C++ 시작

2. 시작 페이지에서 새로운 응용 프로그램을 만들기 위해 새 프로젝트를 생성(Win32 콘솔)

3. 프로젝트 이름은 LoanPreparation1

4. 빈 문서를 추가하고 프로젝트 생성을 완료(.cpp)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
using namespace std;
 
void main()
{
    wprintf_s(L"=-= Loan Evaluation =-=");
    _putwch('\n');
 
    wprintf_s(L"=-= Loan Summary =-=");
    _putwch('\n');
 
    getchar();
    getchar();
}
cs


Signed Short Integers


Word는 16개의 비트나 2개의 바이트를 기반으로 자연수(Natural Number)를 저장합니다. 위에서 언급했듯이, Word에 저장할 수 있는 최대 정숫값은 65,535며 Short 키워드 변수도 사용할 수 있습니다. 이때의 변숫값은 -32,768~32,767 사이로 지정할 수 있으며, 아래는 사용 예입니다.


1
2
3
4
5
6
7
#include <iostream>
using namespace std;
 
void main()
{
    short small = 448;
}
cs


Short형 변수의 값을 출력하려면, cout<< 뒤에 변수명을 입력합니다.

아래는 사용 예입니다.


1
2
3
4
5
6
7
8
9
10
#include <iostream>
using namespace std;
 
void main()
{
    short small = 448;
 
    cout << small;
    putchar(L'\n');
}
cs


위의 소스 코드는 아래와 같은 출력값을 나타냅니다.


448

Press any key to continue . . .


변수가 값(Value)을 갖기 위해선 cin>>을 선언한 뒤, >> 뒤에 변수명을 입력해야 합니다. 


변수가 양수 또는 음수를 표현하기 위해서 Signed 키워드를 사용합니다. signed는 숫자 값 외의 다른 바이트 공간에 0을 채우고, unsigned는 1을 채웁니다. (signed는 부호를 표현, unsigned는 양수의 표현 범위를 두 배로 늘림)


1
2
3
4
5
6
7
8
9
10
#include <iostream>
using namespace std;
 
void main()
{
    signed short small = 448;
 
    cout << small;
    putchar(L'\n');
}
cs


결과는 위와 같습니다.


Win32 라이브러리는 짧은 정수형 데이터(signed short integer)를 지원하기 위해 SHORT란 데이터형을 제공합니다. 사용 방법은 아래와 같습니다.


1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <Windows.h>
using namespace std;
 
void main()
{
    SHORT number = 1609;
 
    cout << number;
    putchar(L'\n');
}
cs


결과는 아래와 같습니다.


1609

Press any key to continue . . .

Unsigned Short Integers


변수가 양수나 비교적 작은 숫자만을 할당받는 경우엔 unsigned short integer로 부를 수 있습니다. 따라서, 상대적으로 작은 숫자를 저장할 변수를 선언하려면, 0에서 65,535까지 표현할 수 있는 unsigned short integer형을 사용합니다.


1
2
3
4
5
6
7
8
9
10
#include <iostream>
using namespace std;
 
void main()
{
    unsigned short number = 1609;
 
    cout << number;
    putchar(L'\n');
}
cs


결과는 아래와 같습니다. (C언어 int, C++ int 결과는 같음)


This music album contains 16 tracks

Music Category: 2


Win32 라이브러리는 unsigned short의 값을 위해 USHORT, WORD란 데이터형을 제공합니다.


C언어 INT, C++ INT 16비트에서 이해하기[C언어 INT, C++ INT 16비트에서 이해하기]


Application: Using Unsigned Short Integers


unsigned short integer의 사용 예


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
using namespace std;
 
void main()
{
    unsigned short period;
 
    wprintf_s(L"=-= Loan Evaluation =-=");
    _putwch('\n');
    wprintf_s(L"Enter the number of months: ");
    cin >> period;
 
    wprintf_s(L"=-= Loan Summary =-=");
    _putwch('\n');
    cout << "Period: " << period << " months\n";
 
    getchar(); 
    getchar();
}
cs


메뉴에서 디버그 - 디버그 시작을 클릭


원하는 숫자를 입력하고 엔터를 누르면, 아래와 같은 결과화면이 생성


=-= Loan Evaluation =-=

Enter the number of months: 36


=-= Loan Summary =-=

Period: 36 months


C언어 INT, C++ INT 16비트에서 이해하기, 정수 자료형 키워드 뜻

댓글