ビット単位の演算子なしでこの計算を実行したいと思います。
unsigned result = (1u << 5);
結果は 32 になります。バイナリ1
を に変換していることはわかっていますが、ビット単位の演算を行わず100000
に同じことを実行したいと考えています。
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 *'.