정수표현질문

qkrwncks593의 이미지

1바이트로 정수를 표현한거랑

2바이트로 정수를 표현한거랑

00000001
00000000 00000001

두개가 있다면

둘다 다른건가요 ?

10 진수로 바꾸면 같은값이 나오고

컴퓨터가 인식할때는 같은값 (정수 ) 으로 인식하나요 ?

익명 사용자의 이미지


이 질문에 답하려면 "같다" 라는 "연산"에 대해서 먼저 정의할 필요가 있습니다.

(엄밀히 말하자면 1바이트로 정수를 표현한다 라는 의미도 정의해야겠지만요..)

일반적인 프로그래밍 언어의 경우 "같다" 라는 연산은,

두 자료형의 형이 다른 경우 내부적으로 형변환을 먼저 합니다. (implicit type conversion)

말씀하신 경우에는 둘다 4byte int로 promotion될것으로 보이므로,

== 연산의 결과는 참이 되겠습니다.

다른 연산 ( 대입, 비교 ) 등도 마찬가지 과정이 일어납니다.

"==" 연산의 정의에 따라서 "다르다"라고 인식할 수도 있겠지요..

Anti-Lock의 이미지

좋은 답변이라고 생각됩니다.

여기에 더하여... 음수를 생각해 보자면

int8_t a = -1;
int32_t b = -1;
(a == b); // 결과는 참

8비트 a와 32비트 b를
이진수로 써보면 분명히 '1'의 개수가 다르지만
같은 값(-1)입니다.
8비트 숫자가 32비트 숫자로 형변환 되기 때문입니다.

논외지만, 익명인 이유는 로그인이 귀찮아서 일까요...
저도 가끔 익명글을 씁니다만...