LoginSignup
3
3

More than 5 years have passed since last update.

二重のビット否定(~~)の意味は何??

Last updated at Posted at 2016-10-12

three.jsのgpgpu birdsのソースコードを眺めていたら、またちょっと??なコードを見つけた。

for( var v = 0; v < triangles * 3; v++ ) {
                    var i = ~~(v / 3);
                    var x = (i % WIDTH) / WIDTH;
                    var y = ~~(i / WIDTH) / WIDTH;
.
.
.

この2重のビット否定は何を意味するのだろうか?と少し考えた。が、先を急ぎたいのでググった。
正解は「少数部の切り捨て」だった。
最初の~で整数化後ビット反転され、2つ目の~でもとに戻す。
元の数字の整数部が32ビット整数であらわされる範囲内でないとおかしくなりそうだけどね。

参考:

http://james.padolsey.com/javascript/double-bitwise-not/
https://www.softel.co.jp/blogs/tech/archives/3049

以上

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3