ゆうなんとかさんの雑記帳的な。

Twitterで踊ったり音ゲーしたりしてるあの名前がよくわからない人が書いてるらしいよ。

ビット演算でこんなことができるなんて

やあ (´・ω・`)
ようこそ、ビットハウスへ。
この右シフトはサービスだから、まず演算して落ち着いて欲しい。

うん、「また」なんだ。済まない。
仏の顔もって言うしね、謝って許してもらおうとも思っていない。

でも、このタイトルを見たとき、君は、きっと言葉では言い表せない
「ときめき」みたいなものを感じてくれたと思う。
殺伐とした世の中で、そういう気持ちを忘れないで欲しい
そう思って、この記事を書いたんだ。

じゃあ、注文を聞こうか

今回はJavaScriptのビット演算で、床関数の実装と整数位未満の四捨五入ができるというお話です。今のところこれができる言語はPHPの他には見つけられなかったので実用性はいまいちですが。
床関数というのは、与えられた実数の整数部を返す関数のことです。要はMath.floorと同じことをするわけですね。これを実現するビット演算はこちら。

num = Math.PI
num | 0  //0との論理和を取る
num & -1 //-1との論理積を取る
num << 0 //0ビットシフトする(シフト方向は左右どちらでも可)

いずれも3を返します。最初の0との論理和を取るものがいちばん短いので、ショートコーディングをするならこれを使うことをおすすめします。
このように床関数が実現できるので、これを使うと整数位未満四捨五入が、Math.roundを使わなくても実現することができます。話は簡単で、四捨五入したい数値に0.5足せばいいだけです。

num = 2.75
(0.5+num)|0 //こうする
.5+num|0 //さらに短く
Math.round(num)

ビット演算は四則演算よりも優先度が低いので、視認性を挙げる目的でもない限り基本的にかっこは不要です。このように最大7文字節約できます。