How to: The ~ operator?

后端 未结 4 618
我寻月下人不归
我寻月下人不归 2020-11-27 19:23

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?

相关标签:
4条回答
  • 2020-11-27 19:58

    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).

    0 讨论(0)
  • 2020-11-27 20:06

    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

    0 讨论(0)
  • 2020-11-27 20:14

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

    0 讨论(0)
  • 2020-11-27 20:24

    ~ 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

    0 讨论(0)
提交回复
热议问题