Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

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

https://github.com/mrdoob/three.js/blob/master/examples/webgl_gpgpu_birds.html#L391

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

以上

SFPGMR
プログラミングを趣味の一つとしてます。得意分野はなく、そのとき興味を引いたものをいじって楽しんでおります。つまりすべての分野においてド素人ということです。 保有資格:普通運転免許・ネットワークスペシャリスト・情報処理第一種・第二種
http://sfpgmr.net/blog/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away