'=' 복사 대입 연산자
자료형 변수 = 대입할 값
char c = 'a';
아스키 코드로 변환 하여 메모리에 기록 함
1Byte
short s = 3;
int 메모리 반임 자주 사용 안함
2Byte
int i = 30;
integer(정수), 연산이 제일 빠름 이유는 CPU 단위에 기준으로 int 값이 정해지기 때문
4Byte
long l = 300;
int보다 큼 메모리는 동일한데 이유는 예전에는 차이났는데 비트 체제가 바끼면서 같아짐 말그대로
int 쓰지 잘 안씀
4Byte
long long ll = 3000;
int 메모리 두배 사용
8Byte
float f =3.14f;
Floating-Point, 부동소수점 f붙이고 해야 데이터 손실이 안남 이유는 f를 안 붙일 시 더블의 메모리인 8Byte를 잡고 남은 4Byte는 손실남
4Byte
double d = 3.14;
Duble Precision Floating-Point 두배정밀도 부동소수점
8Byte
sizeof - 데이터 크기를 반환하는 명령어
자료형의 특징
Ascii Table (0~127, 128가지) A:65 a:97 위 c 변수에 입력되어있는 char 자료형은 메모리에 97이라는 숫자로 입력되어있다.
128 64 32 16 8 4 2 1 - 2진법
0 0 0 0 0 0 0 0 - 컴퓨터 표기법
음수의 표현
컴퓨터 계산 원래 계산
00000101 5
+ 10000101 -5
----------------- -----
10001010 0
-10 틀린 답이 나옴
그래서 2진법 계산은 2의 보수법을 사용
2의 보수법 *보수:반대되는 값
00000101 => 5
11111010 => 1의 보수법 (반대 값)
11111011 => +1 2의 보수법 (+1)
00000101
11111011
--------------
00000000 으로 0이란 답이 나옴 맨앞 1은 Memory Overflow로 메모리를 벗어난 숫자는 버려짐
-----
실수의 표현
정밀도가 높을 수록 실수를 길게 표현 가능
3 . 14 입력한 실수
부호(+-) l 정수부(m) l 실수부
ㅣ00000000ㅣ00000011ㅣ00000000ㅣ0001110ㅣ 실제 메모리에 들어가있는 실수
+-(1.m) * 2^e-127 - 컴퓨터의 실수 표현 수식
#include
int main() {
float sum = 0.0f;
for (int i = 0; i < 1000; i++) {
sum += 0.001f;
}
return 0;
}
출력 시 0.999991 실제 답 : 1 이 차이를 부동소수점 오차라고 한다.
연산자(Operator)
사칙 연산
+, -, *, / 더하기 빼기 곱하기 나누기순으로 속도가 빠르다.
ex) /2 => *0.5 곱하기 더 빠름
연산자 우선 순위
*/% > +- 답이 다르면 안되니 () 소괄호로 구분하여 묶어준다.
복합 연산자
+= , -=, *=, /=
ex) iResult *= 2; 풀이 ) iResult = iResult *2;
자료형의 승격
float iDiv = 5 / 2 ; 계산 시 소숫점이 날라감
이유 : int값으로 저장되었다가 불러와 계산하여 int값인 값이 나오며 그 답을 다시 float 값으로 바꿔 표기해서
float fDiv = 5.0f / 2.0f 이런식으로 계산해야하지만
float fDiv = 5.0f / 2 이렇게 계산하여도 답은 같다.
이유: 정밀도가 높은것에 따라서 정밀도가 떨어지는 자료형쪽이 승격한다.
이걸 자료형의 승격이라고 한다.
% : 나머지 연산자 (정수만 가능)
iResult = 8%3;