ビット演算を知らないといっても過言ではないくらい忘れていた。
あれは実質知らなかったな…。
与えられた数値の「桁数」が奇数か偶数か判定をするとき、次のコードで判定をしていた。
if len(str(num)) % 2 == 0:
別に上記のものでも動作するのでいいのだけれども、ビット演算を使うと次のようになる。
while num:
digit_count += 1
num //= 10
return (digit_count & 1) == 0
どうやらビット演算の方が処理速度が速く、メモリの使用量も少ないみたい。
この知見が活きる未来がまだ見えないけど、
趣味でオーバーエンジニアリングする時に積極的に活用していきたいなあ、と思った。
適切な場面でこの知識を引き出してこられるかは怪しいが楽しみは増えた。
ついつい len 関数でやりたくなりそうだけど、ビット演算を使った解法の方が好きだな。
str に変換するのがなんかダサいし、数値のまま判定できた方がかっこいいなって思う。