Creative Commons License

Microsoft .NET

닷넷!시작하기
닷넷! Ver 2.0~
닷넷!스킬업
웹개발
윈폼개발
실용모듈개발
Tip & Tech
하루 한 문법

Microsoft .NET 개발자들을 위한 공간입니다. 기초강의에서 부터 고급 기술 정보 및 팁등을 다루도록 하겠습니다.

.

닷넷!시작하기

Microsoft. NET 을 시작하는 분들을 위한 강좌입니다. 주로 기초적인 내용과 때론 기본적인 내용을 다룹니다

부호있는, 부호없는 ?

작성자 : 박종명
최초 작성일 : 2009-09-25 (금요일)
최종 수정일 : 2009-09-25 (금요일)
조회 수 : 3266

정수계열 기본 자료형을 보면 '부호있는(부호없는) XX 비트 정수입니다' 라는 표현을 MSDN에서 보게 됩니다


부호 있는게 뭐고 부호 없는게 무엇일까요?

다들 아실테지만, 
이 말은  +, - 부호가 있느냐 없느냐 하는 것입니다

수를 표현하기 위해 가장 왼쪽 비트를 부호 비트로 사용하느냐, 사용하지 않느냐는 의미입니다

만일 부호비트를 사용하지 않는다면 그 만큼 더 큰 수를 표현할 수 있겠죠

이와 관련해서는 다음의 글을 참고해 주세요

정수 데이터의 표현 방식

sbyte 라는 자료형이 있습니다. sbyte 는 부호있는 8bit 정수이죠
1sbyte 는 8bit 이고, 이 중 가장 왼쪽 비트는 부호비트로 사용됩니다
따라서 부호비트를 뺀 7bit 로 수를 표현하게 됩니다

7bit로 표현가능한 수의 범위는 어떻게 될까요?
1bit 에는 0 과 1 을 표현할 수 있습니다. 즉 하나의 bit에 2개의 범위(0,1)를 표현할 수 있습니다

그럼 2bit는 어떨까요?
1bit 에 2개를 표현할 수 있으나, 2bit 에는 2 * 2 만큼 표현 가능하겠죠
마찬가지로 3bit 는, 2 * 2 * 2 만큼의 수를 표현할 수 있습니다

결론적으로 다음과 같은 공식이 성립됩니다
n bit로 표현할 수 있는 수의 범위 = 2^n 개가 됩니다

그럼, 다시 부호비트를 뺀 7bit 로 표현가능한 수의 범위는 128 개가 되네요
말은 정수 128까지 표현가능하다는것이 아니라 128개까지 표현가능하다는 것입니다
0 부터 시작하기 때문에 양의 정수를 보면 0 ~ 127 (총 128개)까지 표현이 가능한 것입니다
(엄밀히 말해 0은 양의정수는 아니죠.. 0은 0일 뿐입니다 ^^;)

다시말해, sbyte는 0을 포함한 양의정수 0 ~ 127 와 음의 정수 -1 ~ -128 개까지 표현가능합니다

아래 표는 정수형 데이타타입의 부호있는, 없는 형식입니다

Bit

부호 있는

부호 없는

8bit

sbyte

byte

16bit

short

ushort

32bit

int

uint

64bit

long

ulong

만일, 음수가 필요 없는 정수를 사용한다고 하면,
굳이 부호 있는 자료형을 사용해서 비트를 낭비(?) 하느니,
부호 없는 자료형을 선택해서 더 넓은 범위의 수를 저장할 수 있도록 하는 것도 나빠 보이지는 않습니다

이름
비밀번호
홈페이지
HB <- 왼쪽의 문자를 오른쪽 박스에 똑같이 입력해 주세요