본문 바로가기

운영체제

64비트 주소를 상위 32/하위 32비트로 나누어 표현

64비트 주소를 상위 32비트/하위 32비트로 나누어 표현하는 방법


코드로 볼 때는 헷갈렷는데.. 정리하고나니 너무 간단하네요 

메모리를 읽을때 2진수로 읽는 건 알아보기 힘들고 비효율적이므로 2진수 숫자 4개를 묶어 16진수로 표현한 후, 16진수로 읽습니다. 1바이트는 8비트이므로, 1바이트당 16진수 2개로 표현할 수 있겠네요

 

64비트는 8바이트가 됩니다. 1바이트씩 나누어 표현해서 그림과 함께 보겠습니다.

상위 32비트 / 하위 32비트는 각각 4바이트가 되겠네요





 

음.. 1바이트는 8비트이고 4비트씩 16진수 한개로 묶어 16진수 2개로 표현한다고 했습니다.

그럼 바이트 단위로 보았을때,  256 = 16^2 = 2^8만큼 차이가 나겠죠?

간단한 것이지만 예를 들어보자면.. 0x01과 0x0100 처럼 말이죠

 

 

 

 

 

간단하게, 같은 원리 입니다.

 

 

하위 32비트와 상위 32비트는 2^32 차이가 나겠죠?

 

64비트 주소값 = (하위 32비트 주소값 + 상위 32비트 주소값 * 2^32) 가 됩니다.

반대로 생각하면.. 

상위 32비트 주소값 = 64비트 주소값/2^32 = 64비트 주소값>>32 가 됩니다.

 

32비트 주소값을 하위 16비트, 상위16비트로 표현하는 것도 같은 원리입니다.