1바이트로 정수를 표현한거랑
2바이트로 정수를 표현한거랑
00000001 00000000 00000001
두개가 있다면
둘다 다른건가요 ?
10 진수로 바꾸면 같은값이 나오고
컴퓨터가 인식할때는 같은값 (정수 ) 으로 인식하나요 ?
이 질문에 답하려면 "같다" 라는 "연산"에 대해서 먼저 정의할 필요가 있습니다.
(엄밀히 말하자면 1바이트로 정수를 표현한다 라는 의미도 정의해야겠지만요..)
일반적인 프로그래밍 언어의 경우 "같다" 라는 연산은,
두 자료형의 형이 다른 경우 내부적으로 형변환을 먼저 합니다. (implicit type conversion)
말씀하신 경우에는 둘다 4byte int로 promotion될것으로 보이므로,
== 연산의 결과는 참이 되겠습니다.
다른 연산 ( 대입, 비교 ) 등도 마찬가지 과정이 일어납니다.
"==" 연산의 정의에 따라서 "다르다"라고 인식할 수도 있겠지요..
좋은 답변이라고 생각됩니다.
여기에 더하여... 음수를 생각해 보자면
int8_t a = -1; int32_t b = -1; (a == b); // 결과는 참
8비트 a와 32비트 b를 이진수로 써보면 분명히 '1'의 개수가 다르지만 같은 값(-1)입니다. 8비트 숫자가 32비트 숫자로 형변환 되기 때문입니다.
논외지만, 익명인 이유는 로그인이 귀찮아서 일까요... 저도 가끔 익명글을 씁니다만...
텍스트 포맷에 대한 자세한 정보
<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]
이 질문에 답하려면 "같다" 라는 "연산"에 대해서
이 질문에 답하려면 "같다" 라는 "연산"에 대해서 먼저 정의할 필요가 있습니다.
(엄밀히 말하자면 1바이트로 정수를 표현한다 라는 의미도 정의해야겠지만요..)
일반적인 프로그래밍 언어의 경우 "같다" 라는 연산은,
두 자료형의 형이 다른 경우 내부적으로 형변환을 먼저 합니다. (implicit type conversion)
말씀하신 경우에는 둘다 4byte int로 promotion될것으로 보이므로,
== 연산의 결과는 참이 되겠습니다.
다른 연산 ( 대입, 비교 ) 등도 마찬가지 과정이 일어납니다.
"==" 연산의 정의에 따라서 "다르다"라고 인식할 수도 있겠지요..
좋은 답변이라고 생각됩니다. 여기에 더하여...
좋은 답변이라고 생각됩니다.
여기에 더하여... 음수를 생각해 보자면
int8_t a = -1;
int32_t b = -1;
(a == b); // 결과는 참
8비트 a와 32비트 b를
이진수로 써보면 분명히 '1'의 개수가 다르지만
같은 값(-1)입니다.
8비트 숫자가 32비트 숫자로 형변환 되기 때문입니다.
논외지만, 익명인 이유는 로그인이 귀찮아서 일까요...
저도 가끔 익명글을 씁니다만...
댓글 달기