Haekt‘s log

C 언어 unsigned 와 signed 의 차이 본문

언어/C

C 언어 unsigned 와 signed 의 차이

Haekt 2022. 9. 20. 15:19

 

코드를 보며 이해하자.

 


실행 결과 -

 

unsigned : 양수형만 사용해서 사용가능한 메모리 크기를 배로 가져갈 수 있음 

signed : 양수와 정수 모두 사용가능한 자료형 

 

결과를 보면 unsigned , signed 둘 모두 양수 사용가능하기에 1을 넣었을때에는 출력이 가능하고,

음수는 signed 만 사용가능하기 때문에 unsigned 에는 -1 이 아닌 쓰레기값이, signed 에는 -1 이 들어간 것을 볼 수 있다.

 

 

부호비트를 사용하기 때문에 signed 는 unsigned 에 비해서 사용 가능한 비트 수가 줄어든다.

반대로 unsigned 는 부호 비트없이 모두 사용하기 때문에 사용가능한 비트 수가 늘어난다.

 

 


부호비트란?

 

https://ehpub.co.kr/12-%EB%B6%80%ED%98%B8%EC%9E%88%EB%8A%94-%EC%A0%95%EC%88%98-%ED%91%9C%ED%98%84-%EB%B6%80%ED%98%B8%EB%B9%84%ED%8A%B8-%ED%95%84%EB%93%9C/

 

비트의 가장 앞 비트를 사용하여 1 일때 - , 0일때 + 임을 표현하는 비트이다.

그래서 unsigned 를 사용하면 부호 비트가 필요없기 때문에 1개의 비트를 더 사용할 수 있게 된다.


사용법 

 

사용방법은 위의 코드와 동일하게, 변수의 자료형 앞에 선언해서 사용한다.

 

unsinged int test;

singed int test;

 

보통 singed 는 기본으로 선언되어 있기 때문에, 따로 선언을 하지 않아도 된다.

 

 

 

// 보통 사용자가 입력하는 경우를 제외하고는 거의 대부분 양수만을 사용하기에 unsigned 를 더 자주 사용한다.

// 만약 음수를 unsigned 자료형에 넣을경우 쓰레기 값(?)이 들어간다

// signed 는 오류를 처리할 때마다 사용자가 음수를 입력했는지, 양수를 입력 했는지 체크해야하는 불편함이 생긴다.

 

 

잘못된 점이 있다면 말씀 해 주시면 감사하겠습니다. 

Comments