16진수 1칸(4bit) 표현은 2진수 4칸(4bit)으로 표현
16진수 2칸(8bit)은 1byte
따라서 32bit 프로세서는 2진수 32칸, 16진수 8칸/64bit 프로세서는 2진수 64칸, 16진수 16칸
현재 컴퓨터는 부호 있는 수는 2의 보수로 표현, 부호 없는 수는 1의 보수로 표현
0시작→양수
1시작→음수
int a=-2이고 unsigned int b=1일때 long c=a+b 계산 결과 값은 부호 unsigned 자료형 int인 -1
이는 32bit 16진수로 표현하면 FFFF FFFF
이 결과값이 long 타입 c에 대입되게 되는데 long이
32bit일때는 FFFF FFFF 그대로
64bit일때는 기존의 결과값이 unsigned였기에 zero extension이 일어나게 되고 16진수로 표현하면 0000 0000 FFFF FFFF가 됨
하지만 c가 signed long 타입이기에 해당 라인이 끝나게 될 때 c의 값은 signed long 64bit 0000 0000 FFFF FFFF가 됨
다음으로 long long d=c; 일때도 c가 32bit였는지 64bit(llp64, lp64 둘 다)였는지에 따라 결과값이 달라짐
c가 32bit일때는 FFFF FFFF에 sign extension이 일어나 16진수 FFFF FFFF FFFF FFFF가 됨
1로 시작하면 음수이기에 이 때 결과값은 -1
c가 64bit일때는 16진수 0000 0000 FFFF FFFF로 sign extension이 일어나 앞부호가 0으로 시작하면 양수이기에 해당 결과값은 4,294,967,295가 됨
'OS' 카테고리의 다른 글
32-bit와 64-bit 컴퓨터 차이 (0) | 2022.04.05 |
---|---|
메모리 구조 (0) | 2020.10.09 |
MSB, LSB (1) | 2020.10.09 |
Interent과 Web의 차이점 (0) | 2020.09.26 |