자료형(Data Type)이란 무엇인가?
1.데이터를 표현하는 방식
2.Byte 단위로 데이터의 크기를 설정
int i = 0;
정수 자료형에 i라는 변수명을 부여한다.
i라는 변수에는 정수 데이터만 들어갈수 있고 최대 4Byte까지의 데이터를 저장할 수 있다.
자료형의 종류
1.정수형 : char(1Byte), short(2Byte), int(4Byte), long(4Byte), long long(8Byte)
2.실수형 : float(4Byte), double(8Byte)
Byte라는 단위의 체감은 어느정도 인가?
- Byte : 컴퓨터의 기억장치 크기를 나타내는 단위
- 1Byte -> 8bit (1bit가 8개 모인것)
- 1bit : 데이터를 더이상 쪼갤수 없는 최소 단위로 값이 있다(1) 없다(0) 두가지의 상태값만을 나타낼 수 있음
1Bit 8개 -> 1Byte 1024개 -> 1KB 1024개 -> 1MB 1024개 -> 1GB
1Byte로 무엇을 할 수 있는가?
1Bit -> 0과1 두가지 경우의 수를 표현할 수 있음
예를 들어서 A라는 바구니에서 빨간공, 파란공 각각 하나씩 들어있을때 뽑을 수 있는 경우의 수는 2가지(2의1승)
A,B 두개의 바구니에서 각각 하나씩 공을 뽑았을 때 나올 수 있는 경우의 수 4가지(2의2승)
A,B,C,D,E,F,G,H 8개의 바구니에서 각각 하나씩 공을 뽑았을 때 나올 수 있는 경우의 수는 256가지(2의8승)
- 1Byte(8Bit)는 256가지의 상태를 표현할 수 있다.
Q1) 256가지의 경우의 수로 표현할 수 있는 수의 범위는??
정수만 표현가능, 음수를 제외하고 양수만 표현할 수 있다고 가정을 둔다.
0~255까지 표현 가능하다.
unsigned char a = 0; 양수만으로 0~255까지 표현가능
a = 256 0~255까지의 정수만 표현가능한데 256을 넣는 경우에는 어떻게 될까?
1 1 1 1 1 1 1 1
+ 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 0 char 표현가능한 범위는 8bit이므로 0이 표현된다.
컴퓨터에서 음수는 어떻게 표현되는가?
1Byte로 양수만 표현
unsigned char c = 0 ~ 255
1Byte로 양수, 음수 표현
(signed) char c = -128 ~ 127
컴퓨터는 최상위 부호비트에 따라서 음수인지 양수인지 판별한다.(MSB)
0 [] [] [] [] [] [] [] 양수표현(0 ~ 127)
1 [] [] [] [] [] [] [] 음수표현(-128 ~ -1)
Q1) CPU에서 음수처리도 덧셈처리와 같은 방식일까?
4 + 4 -> 양수4에 양수4를 더한다.
4 + (-4) -> 양수4에 음수4를 더한다(양수4에서 음수4를 뺀다).
127과 더해서 0이 나오는 숫자는 무엇일까?
0 1 1 1 1 1 1 1 (127)
+ 1 0 0 0 0 0 0 1 (-127)
0 0 0 0 0 0 0 0 0 (0)
Q2) char a = 255 -> 표현가능한 수의 범위는 -128 ~ 127까지인데 왜? 에러가 안나고 -1로 출력이 될까?
양수만 표현하기로 했을 때는 8Bit 전체가 1로 채워져 있으면 255인데 음수와 양수 둘다 표현하는 경우 -1이다.
1 1 1 1 1 1 1 1 -> 255(양수만 표현하는 경우)
1 1 1 1 1 1 1 1 -> -1(음수, 양수 둘다 표현한 경우)
unsigned char a = 255
char b = 255
--> 두개의 변수가 가리키는 메모리의 비트 상태는 동일하다.
메모리에 들어있는 데이터는 동일한데 어떻게 보느냐에 따라서 다르게 해석됨 (추후 포인터와 연관이 있음)
쉽게 예시를 들면 내가 바라보는 기준으로 아버지는 나에게 아버지이고 할아버지 기준으로 보면 할아버지에게 아버지는 아들로 해석이 된다.
'프로그래밍 언어' 카테고리의 다른 글
산술 연산자 (0) | 2022.03.20 |
---|---|
실수 자료형 (0) | 2022.03.20 |
싱글스레드와 멀티스레드의 장단점 (0) | 2022.03.03 |
자바에서 지역변수가 초기화 되지 않는 이유? (0) | 2022.03.02 |
자바스크립트 입문 1 (async,defer) (0) | 2021.05.20 |