エントリーの編集
![loading...](https://b.st-hatena.com/bdefb8944296a0957e54cebcfefc25c4dcff9f5f/images/v4/public/common/loading@2x.gif)
エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
記事へのコメント0件
- 注目コメント
- 新着コメント
このエントリーにコメントしてみましょう。
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています
![アプリのスクリーンショット](https://b.st-hatena.com/bdefb8944296a0957e54cebcfefc25c4dcff9f5f/images/v4/public/entry/app-screenshot.png)
- バナー広告なし
- ミュート機能あり
- ダークモード搭載
関連記事
ビットシフト演算の罠
ビットシフト演算は2のn乗の掛け算/割り算の代わりになります。 例えば a という数を4で割りたい場合は ... ビットシフト演算は2のn乗の掛け算/割り算の代わりになります。 例えば a という数を4で割りたい場合は a >> 2 とすることでできます。割り算をするよりも非常に高速にできます。 なのでADコンバータの読み取り値を平均化するときなどは10個分や100個分で平均するのではなく、 8個分や256個分で平均化し、ビットシフト演算で割り算をした方が良いです。 ところがここにも罠が潜んでいます。以下のコードを見てください。 int a, b; a = 24; b = a >> 2 + 1; b には何が入るでしょう? 24を4で割って1を足しているから7になりそうな気がします。 誰だってそう思います。僕もそう思います。 しかし現実は無情。 b には3が入ります。 実はこれは演算子の優先順位が原因です。 ビットシフトは掛け算、割り算の代わりなのだから、足し算よりも優先順位が高いと普通は考えます。