unsigned가 부호없는 이라는 뜻을 가지고 있다고 하는데
unsigned가 왜 쓰이고 어떨때 사용되는지 궁금하네요
대략 설명하면 변수의 크기는 일정 크기로 정해져 있습니다. 예를 들면 char는 8bit죠
char(아무것도 붙어 있지않으면 signed 이다) 를 숫자로 표시하면 -128 ~ 127까지 표시할수 있습니다.
쉽게 말하자면 첫번째 비트가 1이면 음수(-), 0이면 양수(+)을 뜻합니다.
그럼
양의 최대값는 0111 1111(2진수) = +127이 됩니다. 음의 최대값은 1111 1111(2진수) = -127이 됩니다.
unsigned char 는 0~255 까지 표현됩니다. 첫번째 비트를 양수, 음수로 표현하지 않고 그냥 값으로 처리합니다.
최소값 0000 0000(2진수) = 0 최대값 1111 1111(2진수) = 255
----------------------- 과거를 알고 싶거든 오늘의 네 모습을 보아라. 그것이 과거의 너니라. 그리고 내일을 알고 싶으냐? 그러면 오늘의 너를 보아라. 그것이 바로 미래의 너니라.
고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동 "만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"
2진수 1111_1111 = -1입니다. 1000_0000이 음의 최소값(-128)입니다. C 표준에는 2의 보수를 이용하여 음수를 표현하도록 명시되어 있습니다.
Real programmers /* don't */ comment their code. If it was hard to write, it should be /* hard to */ read.
ㅎㅎ "쉽게 말하자면" 이라는 명제를 넣은 이유입니다.
잘 모르는 사람에게 2의 보수를 설명하는것보다는
그냥 첫번째 비트를 마이너스로 설명하는것이 쉽겠지요. ----------------------- 과거를 알고 싶거든 오늘의 네 모습을 보아라. 그것이 과거의 너니라. 그리고 내일을 알고 싶으냐? 그러면 오늘의 너를 보아라. 그것이 바로 미래의 너니라.
포인터(주소) 값은 모두 unsigned 가 되어야 겠죠.
절대로 (-)가 될 수 없는 나이(age), 키, 몸무게 같은 것도 그렇고,
시간(time) 도 음수가 될수 없겠네요..
그런 의미로 찾아보시기 바랍니다.
윗분께서 잘 말씀하셨다시피 절대로 음수가 될 수 없는 값이면서 표현 범위를 늘리고자 할 때 사용합니다.
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
대략
대략 설명하면
변수의 크기는 일정 크기로 정해져 있습니다.
예를 들면 char는 8bit죠
char(아무것도 붙어 있지않으면 signed 이다) 를 숫자로 표시하면 -128 ~ 127까지 표시할수 있습니다.
쉽게 말하자면 첫번째 비트가 1이면 음수(-), 0이면 양수(+)을 뜻합니다.
그럼
양의 최대값는 0111 1111(2진수) = +127이 됩니다.
음의 최대값은 1111 1111(2진수) = -127이 됩니다.
unsigned char 는 0~255 까지 표현됩니다.
첫번째 비트를 양수, 음수로 표현하지 않고 그냥 값으로 처리합니다.
최소값 0000 0000(2진수) = 0
최대값 1111 1111(2진수) = 255
-----------------------
과거를 알고 싶거든 오늘의 네 모습을 보아라. 그것이 과거의 너니라.
그리고 내일을 알고 싶으냐?
그러면 오늘의 너를 보아라. 그것이 바로 미래의 너니라.
고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"
2진수 1111_1111 =
2진수 1111_1111 = -1입니다. 1000_0000이 음의 최소값(-128)입니다.
C 표준에는 2의 보수를 이용하여 음수를 표현하도록 명시되어 있습니다.
Real programmers /* don't */ comment their code.
If it was hard to write, it should be /* hard to */ read.
ㅎㅎ "쉽게 말하자면"
ㅎㅎ "쉽게 말하자면" 이라는 명제를 넣은 이유입니다.
잘 모르는 사람에게 2의 보수를 설명하는것보다는
그냥 첫번째 비트를 마이너스로 설명하는것이 쉽겠지요.
-----------------------
과거를 알고 싶거든 오늘의 네 모습을 보아라. 그것이 과거의 너니라.
그리고 내일을 알고 싶으냐?
그러면 오늘의 너를 보아라. 그것이 바로 미래의 너니라.
고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"
예를 들어
포인터(주소) 값은 모두 unsigned 가 되어야 겠죠.
절대로 (-)가 될 수 없는 나이(age), 키, 몸무게 같은 것도 그렇고,
시간(time) 도 음수가 될수 없겠네요..
그런 의미로 찾아보시기 바랍니다.
윗분께서 잘
윗분께서 잘 말씀하셨다시피 절대로 음수가 될 수 없는 값이면서 표현 범위를 늘리고자 할 때 사용합니다.
Real programmers /* don't */ comment their code.
If it was hard to write, it should be /* hard to */ read.
댓글 달기