Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to: The ~ operator?

Tags:

javascript

I can't google the ~ operator to find out more about it. Can someone please explain to me in simple words what it is for and how to use it?

like image 460
muudless Avatar asked Jun 07 '11 04:06

muudless


4 Answers

It is a bitwise NOT.

Most common use I've seen is a double bitwise NOT, for removing the decimal part of a number, e.g:

var a = 1.2; ~~a; // 1 

Why not use Math.floor? The trivial reason is that it is faster and uses fewer bytes. The more important reason depends on how you want to treat negative numbers. Consider:

var a = -1.2; Math.floor(a); // -2 ~~a; // -1 

So, use Math.floor for rounding down, use ~~ for chopping off (not a technical term).

like image 124
David Tang Avatar answered Sep 25 '22 19:09

David Tang


One usage of the ~ (Tilde) I have seen was getting boolean for .indexOf().

You could use: if(~myArray.indexOf('abc')){ };

Instead of this: if(myArray.indexOf('abc') > -1){ };

JSFiddle Example


Additional Info: The Great Mystery of the Tilde(~)

Search Engine that allows special characters: Symbol Hound

like image 26
Justin Avatar answered Sep 25 '22 19:09

Justin


It's a tilde and it is the bitwise NOT operator.

like image 29
Nik Avatar answered Sep 21 '22 19:09

Nik


~ is a bitwise NOT operator. It will invert the bits that make up the value of the stored variable.

http://en.wikipedia.org/wiki/Bitwise_operations_in_C#Bitwise_NOT_.22.7E.22_.2F_one.27s_complement_.28unary.29

like image 29
Babak Naffas Avatar answered Sep 24 '22 19:09

Babak Naffas