컴퓨터 시스템에서는 이진 데이터로 표현되고 저장됩니다.
이진 데이터는 모든 데이터를 0과 1로 나타내며 변수나 상수 값도 마찬가지입니다.
CS에서 바이너리 데이터를 이용하여 값을 표현하고 저장하는 방법을 바이너리 표현이라고 합니다.
잘 알려진 컴파일러는 소스 코드를 컴파일하여 기계어로 번역합니다. 데이터 유형은 값과 이진 표현을 저장하는 데 필요한 메모리 양을 결정합니다..
C 언어에서 제공하는 3가지 데이터 유형
1. 기본 데이터 유형: char, int, double…
2. 파생 데이터 유형: 배열 또는 포인터와 같은 기본 유형에서 파생된 구성된 데이터 유형입니다.
3. User-Defined Data Type: 구조체, 유니온, enum 등 프로그래머가 직접 정의한 데이터 타입
기본 데이터 유형 | 문자 유형 | 숯 | 1바이트 |
정수 | 짧은 | 2바이트 | |
내부 | 4 바이트 | ||
긴 | 4 바이트 | ||
긴 긴 | 8바이트 | ||
실수 | 호버링 | 4 바이트 | |
더블 | 8바이트 | ||
긴 더블 | 12 |
위 표에 나와 있는 데이터 유형이나 값의 바이트 크기를 찾으려면 다음과 같이 sizeof 연산자를 사용하십시오.
예: (문자)의 크기
크기(정수)
크기(숫자)
3.141592의 사이즈
따라서 소스 코드에서 데이터 타입이나 값의 크기가 필요한 경우 sizeof 연산자로 얻은 크기를 사용하는 것이 좋다.
각 데이터 유형의 정확한 크기는 플랫폼에 따라 결정됩니다.
언제나 (short)의 크기 <= (int)의 크기 <= (long)의 크기 <= (long long)의 크기 이 시설
짧은 정수 | 짧은 |
곧 서명 | |
부호 있는 짧은 정수 | |
부호 없는 짧은 정수 | 서명되지 않은 짧은 |
부호 있는 정수 | 내부 |
서명 | |
서명되지 않은 | 부호 없는 정수 |
긴 정수 | 긴 |
긴 서명 | |
부호 있는 긴 정수 | |
부호 없는 정수 | 서명되지 않은 긴 |
컴퓨터 시스템은 2의 보수를 사용하여 음수를 나타냅니다.
-n을 2의 보수로 표현하는 방법
: 먼저 n을 이진수로 표현한 다음 각 비트에 대해 0을 1로, 1을 0으로 반전하고 결과에 1을 더합니다.
음수의 2의 보수 표현은 부호 비트에 관계없이 덧셈과 뺄셈을 허용합니다.
모든 비트를 반전한 후 끝에 1을 추가합니다.
정말.. 배움이 보이지 않으면 순식간에 금붕어가 되는 것 같습니다.
부호 없는 유형의 데이터 유형을 고려하고 데이터 유형이 변수에 저장된 값의 의미를 결정한다는 점에 유의하십시오.
예) 1111 1111 1111 0110
짧은 유형: -10
부호 없는 짧은 형식: 65526
정수 유형으로 사용되는 char 유형
char형은 문자형 또는 1바이트 정수형으로 사용할 수 있습니다.
unsigned char(부호 없는 정수 계열 형식) 또는 정수 계열 형식으로 char 형식으로 사용할 수도 있습니다.
char 유형은 -128에서 127 범위의 작은 정수를 저장하는 데 유용합니다.
char형도 정수형이므로 덧셈, 뺄셈 연산이 가능하고 변수를 반환할 때는 %d나 %x를 사용한다.
Unsigned char는 일반적으로 1바이트 크기의 이진 데이터를 저장하는 데 사용됩니다.
표현할 수 있는 정수의 범위는 정수 유형에서 사용하는 바이트 크기에 따라 다릅니다.
예를 들어 유효한 문자 범위는 -2⁷에서 (2⁷-1)까지, 즉 -128에서 127까지입니다.
unsigned char 유형은 8비트를 모두 사용하여 정수 값을 나타냅니다.
유효한 범위는 0 ~ (2⁸-1)이며 0 ~ 255입니다.
범위를 벗어난 값이 정수형 변수에 저장되면 나머지 값은 정수형의 크기에 맞게 잘려서 변수에 항상 범위 내의 값만 저장된다.
최대값보다 큰 값을 저장하면 값이 오버플로되는 것을 방지하고 유효한 범위 내의 값으로 설정됩니다. 과다
최소 정수 값보다 작은 값이 저장되더라도 유효 범위 내의 값으로 설정됩니다. 언더플로
ASCII 코드는 가장 기본적인 문자 코드이며 인쇄할 수 없는 제어 문자와 인쇄할 수 있는 문자로 구성됩니다. 10진 ASCII 코드 중 0~31, 127은 제어 문자이고 나머지 32~126은 인쇄 가능한 문자입니다.
ASCII 코드에서 A와 a의 크기 차이는 각각 65와 97로 32의 차이입니다.
예) ASCII 코드 A : 65 a : 91
Z: 90 Z: 122
특수 문자
특수 문자 | 의미 |
‘\0\ | 널 부호 |
‘\ㅏ’ | 삑 하는 소리 |
‘\비\’ | 역행 키이 |
‘\티’ | 수평 라이더 |
‘\N’ | 새 줄 |
‘\V’ | 세로 탭 |
‘\에프’ | 양식 공급 |
‘\아르 자형’ | 캐리지 리턴 |
‘\”‘ | 큰따옴표 |
‘\” | 작은따옴표 |
‘\\’ | 백슬래시 |
실수
컴퓨터 시스템에서 실수는 이진 데이터로 표시됩니다. 부동 소수점 방법 사용.
부동 소수점 방식은숫자의 지수 및 가수 부분이진 데이터로 나누어 저장합니다.
부동 소수점 용어로 0.3141593 x 10¹, 3.141593 x 10⁰ 및 0.03141593 x 10²는 동일합니다.
즉, 실수의 정밀도는 실수의 가수 부분에 의해 결정되고, 실수의 범위는 지수 부분에 의해 결정됩니다.
정밀도에는 단정밀도와 배정밀도의 두 가지 유형이 있습니다.
Float 형식은 단정밀도 실수를 나타내고 Double 형식은 배정밀도 실수를 나타냅니다.쇼
4바이트 float 형식은 최상위 1비트를 부호 비트로, 다음 8비트를 지수로, 나머지 23비트를 가수로 사용합니다.
8바이트 double 형식은 최상위 1비트를 부호 비트로, 다음 11비트를 지수로, 나머지 52비트를 가수로 사용합니다.
부동 소수점 방식으로 실수값을 표현할 때 실수값 오류가 발생할 수 있습니다.
주어진 비트로 가수를 표현할 수 없는 경우 반올림하여 표현하기 때문이다.
실수 표현 오류를 줄이기 위해서는 double 타입을 사용하는 것이 좋습니다.
실수를 표현할 때도 오버플로우나 언더플로우가 발생합니다.
실제 변수에 최대값보다 큰 값저장하려고 하면 무한대로(INF)실수 변수 최소값보다 작은 값저장하려고 하면 가수를 줄이고 지수를 높여 실수를 나타냅니다.또는 그것이 불가능하다면 0으로 할 수 있어요.
변수 선언: 변수를 사용하기 위해 미리 컴파일러에게 데이터 유형과 변수 이름을 알려줍니다.
컴파일러는 변수를 선언할 때 데이터 유형에 따라 일정량의 메모리를 할당하고 변수 이름으로 메모리에 대한 액세스를 허용합니다.
변수 이름처럼 프로그래머가 만들고 사용하는 이름두번째 식별자
C언어로 이미 등록된 약속의 말붓다, 예약어라고 합니다.
식별자를 만들 때 의미가 있을 만큼 충분히 긴 이름을 사용하는 것이 좋습니다.
선언 시 초기화되지 않은 변수는 가비지 값입니다.
변수가 메모리에 할당될 때 변수에 값을 할당하는 것을 변수 초기화라고 합니다.
모두가 JAVA를 사용해 본 적이 있다면 int widthth = 100을 사용할 수 있습니다. 같은 방법으로 넣습니다.
변수를 초기화할 때 변수의 데이터 유형과 동일한 유형의 값으로 초기화해야 합니다.
데이터 유형이 일치하지 않으면 컴파일러는 데이터 유형에 따라 이를 처리하고 프로세스에서 값이 손실되고 컴파일 경고가 생성됩니다. 초기화되지 않은 변수를 사용하는 것은 위험하기 때문에 0으로 초기화하는 것이 안전합니다.
위의 초기화에서 언급했듯이 변수에 값을 할당할 때 변수의 데이터 타입과 동일한 타입의 값을 할당해야 합니다.
상수는 값이 변경되지 않는 프로그램의 요소입니다.
임시 값은 한 번만 사용하고 사라지는 값입니다.
리터럴 상수는 값 자체가 직접 사용됨을 의미합니다.
문자열 상수는 문자열의 끝을 나타내는 null 문자(‘\0’)와 함께 저장됩니다.
u/U, l/L 또는 f/F와 같은 접미사가 리터럴 상수에 사용되면 의미 있는 데이터로 간주됩니다.
예) 부동 a= 1.23; 더블
수영 선수 a = 1.23F; 흐름 유형
상수가 메모리에 저장되지 않았다면 상수는 어디에 있을까요?
기계어 수준에서 상수는 사용 중 짧은 시간 동안 CPU 레지스터에 값을 써서 사용합니다.
문자열 상수는 상수 아래 메모리에 저장됩니다.
반면에 값을 변경할 수 없는 읽기 전용 메모리 영역에 저장되며 읽기 전용으로 사용됩니다.
매크로 상수
: #define 문으로 정의된 상수
매크로 이름은 다른 이름과 구별할 수 있지만 대문자입니다. 만들다
#define 문은 전처리기에 의해 처리되는 문입니다.오전.
전처리기는 컴파일러가 소스 파일을 컴파일하기 전에 먼저 실행됩니다. 프로그래머가 작성한 소스 파일을 컴파일할 수 있도록 변환하고 준비합니다.
#include 문과 #define 문은 C 문이 아닙니다.
#define 문은 #define으로 정의된 매크로 상수를 특정 값으로 대체합니다.
그러나 문자열에 포함된 매크로 상수는 대체할 수 없습니다.
매크로 상수는 변수가 아니기 때문에 전처리기가 실행된 후에는 매크로 상수의 값을 변경할 수 없습니다.
따라서 매크로 상수를 정의한 후 상수에 값을 할당하려고 하면 컴파일 타임 오류가 발생합니다.
매크로 상수는 일반적으로 함수 외부에서 정의되며 함수 내부에서 정의된 경우 해당 함수 내부에서만 사용할 수 있습니다.
상수 변수
: 값을 변경할 수 없는 변수
상수 변수는 일반 변수와 마찬가지로 메모리에 할당되지만 일반 변수와 달리 값을 변경할 수 없습니다.
일반 변수와 달리 상수 변수는 값을 변경할 수 없는 메모리에 할당됩니다.
상수 변수는 초기화 후에 값을 변경할 수 없기 때문에 상수 변수는 선언할 때 초기화해야 합니다.
기호 상수
: 매크로 상수 및 상수 변수와 같은 명명된 상수
기호 상수는 프로그램을 이해하기 쉽게 만들기 때문에 사용됩니다.
이해하기 쉬운 코드가 좋은 코드이기 때문입니다.