반응형
보다 많은 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);
}
반응형
'Engineer > 소프트웨어 정보' 카테고리의 다른 글
[STM32F103] delay_us 함수 (0) | 2020.07.24 |
---|---|
[STM32] Interrupt 사용하기 (0) | 2020.06.24 |
[STM32F103 Series] HSI clock 사용 (내부 8Mhz to 64Mhz) (0) | 2020.02.18 |
[STM32F10x] hardware I2C example code (0) | 2020.02.04 |
[STM32F10x] software I2C example code (2) | 2020.02.04 |