달력

12

« 2024/12 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
2010. 10. 17. 18:29

signed 와 unsigned 공부2010. 10. 17. 18:29


signed 와 unsigned

변수를 선언할 때 아무것도 안 적고 자료형(Data type)을 바로 쓴다면 signed가 앞에 적혀 있다고 보면 된다.

ex)  char cNum1
에서 char가 자료형, cNum1 이 변수이다.
char 앞에는 'signed'가 생략되어 있다. 그대로 적어줘도 동일한 코딩이다.

unsigned 를 표현하고 싶다면 자료형 앞에 'unsigned'라고 넣어주면 된다.





signed는 -128 ~ 127 까지의 양수와 음수 둘다(정수) 쓰겠다는 명령이고
unsigned 는 0 ~ 255 까지 범위의 양수만 쓰겠다는 명령이다.

만약 127을 입력하고 그걸 출력한다면 둘다 127까지는 범위안이기 때문에 동일하게 출력된다.
대신 128을 입력하게 되면 signed는 범위를 넘어가기 때문에 비트단위 계산으로 127의 다음숫자인 -128, unsigned는 당연히 범위 안이기 때문에 그 결과 그대로 출력된다.


혹시나 255를 입력하게 되면 signed는 -1이 , unsigned 는 범위안이기 때문 255 그대로 출력한다.


char(1바이트)와 short(2바이트)의 입력할 수 있는 최대값을 구하고 싶다면
unsigned char
unsigned short 에서 -1을 입력해주면 된다.


보면 short의 최대값은 65535 , char의 최대값은 255인 것을 확인할 수 있다.

0부터 시작한다고 보았을 때 char는 0부터 255까지 총 256개,
short는 0부터 65535까지 65536개의 숫자 입력이 가능하다.

char = 1바이트 = 8비트 = 2의 8승값 = 256
short = 2바이트 = 16비트 = 2의 16승값 = 65536
이라고 이해해도 무방하다.

그렇다면 int 는 4바이트이기 때문에
int = 4바이트 = 32비트 = 2의 32승값 = 4,294,967,296
int 로 자료형을 선언했을 때 4,294,967,296 가지로 범위가 매우 넓음을 알 수 있다.
:
Posted by 투잌