0

ビット単位の演算子なしでこの計算を実行したいと思います。

unsigned result = (1u << 5);

結果は 32 になります。バイナリ1を に変換していることはわかっていますが、ビット単位の演算を行わず100000に同じことを実行したいと考えています。

4

1 に答える 1

1

2 5が 32 であることはわかっているので、次のように使用できます。

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

そうではなく、単にビットシフト値を使用したい場合は、2 つの方法があります。最初はループです:

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 *'.
于 2012-11-25T02:25:03.933 に答える