單豎杠的運算規則
“|”表示按位或,就是把兩個二進制數按每一位比較,當兩邊都為假時返回值為0,當一邊為真時返回值為1?
看了上面的例子,大體知道單豎杠可以進行取整運算,就是只保留正數部分,小數部分通過拿掉,但是“|0”,又是如何進行運算的呢,為什么能“|0”能達到取整的目的呢?單豎杠不是0有會是多少呢?
帶著這些問題,我們看下面例子:
console.log(3|4); //7
console.log(4|4);//4
console.log(8|3);//11
console.log(5.3|4.1);//5
console.log(9|3455);//3455
這里面提到了單豎杠“|”但是沒有javascript的。
好吧,我在這里公布答案吧。其實單豎杠“|”就是轉換為2進制之后相加得到的結果。例如我們拿簡單的舉例:
3|4
轉換為二進制之后011|100? 相加得到111=7
4|4
轉換為二進制之后100 |100? 相加得到100=4
8|3
轉換為二進制之后1000 |011? 相加得到1011=11
以此類推,我在這里就不一一列舉了,單豎杠“|”運算就是轉換為2進制之后相加得到的結果!
'&'表示運算符按位與,就是把兩個二進制數按每一位比較,兩個都為1則為1,否則為0(也類似與且,都真才為真),TRUE的話就是1,FALSE的話就是0
? ??var b=0;
? ? var a=(1-1==1)&(++b==1);
? ? alert(a);//0? ?
? ? alert(b);//1