반응형

보다 많은 number의 범위를 보장하는 signed extend number funtion 함수이다. 최대 32자리까지 지원하는 unsigned bit number를 부호있는 숫자로 형변환을 할 때에 유용하게 쓰일 함수다.

 

참고로 "1L"의 의미는 여러 종류의 데이터 타입 중에 long type 이 있는데, 이는 int type 보다 큰 memory size를 차지하며, 일반적으로 4bytes(32bit)의 memory size를 가지는 unsigned, signed type으로 형변환을 할 때에 이를 모두 표현할 수 있는 long type 이 제격이다.

/* To convert the sing extension number from the target number */  
long SignExtensionRedunction(uint32_t number, int length)  
{  
     long extend_number = (long)number;  
     long mask = 1L<<(length-1);  

     if (length<32) {  
          // fill the zero bit unless the same bit after the AND bit operation 
          extend_number = extend_number&((1<<length)-1); 
         }  
     return (long)((extend_number^mask)-mask);  
}

 

반응형

+ Recent posts