2012-11-25 3 views
0

비트 연산자없이이 계산을 수행하고 싶습니다.비트 연산자없이 계산 수행

unsigned result = (1u << 5); 

결과는 내가 그 100000에 바이너리 1을 변환하는 것을 알고 있지만 나는 비트 연산없이 같은 일 을 수행하고 싶습니다 (32) 일 것이다. 당신이 2 5 (32)는 것을 알고 있기 때문에

+0

'부호 결과 = 1; for (int i = 0; i <5; ++ i) result * = 2; ' –

+0

미적분? 어디에? 계산해서는 안됩니까? – Annabelle

답변

1

, 당신은 사용할 수 있습니다 : 당신은 단지 bitshift 값을 사용하려는 경우

unsigned int result = 1u * 32u; // or just 32u if it's always '1u *'. 

그렇지 않으면, 두 가지 방법이 있습니다.

unsigned result = 1u; 
for (size_t i = 0; i < 5; result *= 2u, i++); 

또는 비 루프 버전 : 첫 번째는 루프

static unsigned int shft[] = {1u, 2u, 4u, 8u, 16u, 32u, ... }; 
unsigned int result = 1u * shft[5]; // or just shft[5] if it's always '1u *'.