티스토리 뷰
목차
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 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언어 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비트에서 이해하기]
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비트에서 이해하기, 정수 자료형 키워드 뜻