右から何番目のbitが1であるかを求める速いアルゴリズムを探しています。
自分なりに組んでみましたがもっと速い手法がありそうな感じがします。(0番始まりとして値を返しています)
cs
1 public static uint Do(uint value) 2 { 3 uint count = 0; 4 if (value == 0) 5 return 0; 6 7 while ((value & 1) == 0) 8 { 9 value >>= 1; 10 count++; 11 } 12 return count; 13 } 14
特に、bit演算をいい感じに用いればwhileで回さなくても求めることができそうなのですが、もしご存じの方がいらっしゃれば教えていただきたいです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/31 14:51