3

符号なし整数a(以下) を指定すると、次の条件を満たす1024数値を見つける必要があります。p

  • 最低p >= a
  • pは 2 の累乗

ビット単位の演算子を使用して、より良い解決策があると確信しています。
より良い解決策はありますか?

unsigned int closest_pow2(unsigned int a)
{
  if (a == 0 || a > 1024) return 0; //error, never happen
  if (a == 1) return 1;
  if (a == 2) return 2;
  if (a <= 4) return 4;
  if (a <= 8) return 8;
  if (a <= 16) return 16;
  if (a <= 32) return 32;
  if (a <= 64) return 64;
  if (a <= 128) return 128;
  if (a <= 256) return 256;
  if (a <= 512) return 512;
  if (a <= 1024) return 1024;
}
4

3 に答える 3

0

これがひっかけ問題である場合 (最小のp >= aを見つけなければならないという要件がないため)、これが解決策です。

return 1024;
于 2013-10-25T15:28:13.257 に答える