2012-08-07 4 views
0

C에서 8051 uC에 약간의 소프트를 쓰려고합니다. 문제는 가장 긴 정수가 16 비트와 같음입니다. 내 32 비트 부호없는 정수 변수를 만들 수 있습니까? 물론 +, -, < < 등의 모든 작업을 지원해야합니다.순수한 C에서 8051 uC에 32 비트 정수 변수를 저장하는 방법

대체 방법이 없다면? 내 마음에 오는 유일한 방법은 두 개의 16 비트 정수를 갖는 것입니다. 그러나이 솔루션에서는 표준 운영자를 사용할 수 없다고 생각합니다. 모든 작업 중에 두 개의 정수를 수정해야한다는 것을 기억해야합니다.

더 좋은 방법이 있습니까?

미리 감사드립니다. 컴파일러/libc의 구현은 C99에 부합하는 경우

+1

어떻게'uint32_t'가 발생합니까? –

+0

C99 표준의 일부로 소개 된 몇 가지 [stdint.h'에 대한 정보] (http://pubs.opengroup.org/onlinepubs/007904975/basedefs/stdint.h.html)가 있습니다. 현대 C 컴파일러. @ H2CO3이 언급 하듯이, 그것은 unsigned 32 비트 정수가 될 수있는'uint32_t' 타입을 제공합니다. – maerics

+0

어떤 컴파일러를 사용합니까? –

답변

1

, 당신은 32 비트 부호없는 정수를 표현하기 위해

uint32_t 

유형을 사용할 수 있습니다. 그렇지 않으면 크기를 알기 위해 sizeof를 인쇄하십시오.

unsigned long 

시도해보십시오.

+0

uint32_t는 C 1999에서 선택 사항입니다. –

+0

오래 오래 시도 할 수도 있습니다. 다른 모든 것이 실패하면, 당신은 항상 가벼운 bignum 세트를 작성할 수 있습니다. – Kaslai

+0

@Aslai'long long' 또한 C99- 종속적입니다. –