位邏輯運算子和邏輯運算子的區別

2021-09-26 10:58:42 字數 2286 閱讀 7579

用js**了解位邏輯運算子和邏輯運算子的區別

一:邏輯運算子

1:邏輯與 &&

2: 邏輯或 ||

3:邏輯非

!從字面意思上就可以看出來邏輯運算子用於進行邏輯運算的,他的返回值只有true和false,接下來了解一下邏輯運算子的特點;

1: 邏輯與&&

(表示式1 && 表示式2) 表示式1和表示式2必須全部返回true才可以整體返回true;

if (5 > 3 && 2 > 0)//輸出正確!123
做乙個實驗看看賦值運算返回的是true還是false:

var flag = false;

if (flag = true) //輸出

賦值成功返回true!

console.log(flag);//輸出 true12345

進行短路實驗:

var flag = false;

if (3 >

5 && (flag = true))

console.log(flag);//輸出false12345

最後輸出的結果為false,所以在if判斷條件中flag

= true是沒有進行運算的;

在if判斷條件中3>5為false,注意邏輯與&&有短路的特點,只要表示式1為false他就不再判斷後邊的表示式!高效性!

2:邏輯或

||(表示式1 || 表示式2) 表示式1和2中只要有乙個是true那麼它的整體就是true;

直接說明短路功能:

var flag = false;

if (3 <

5 || (flag = true))

console.log(flag);//輸出

false12345

實驗結果表明邏輯或之後的賦值運算子並沒有經過,所以無法執行運算操作;因此得出:邏輯或也有短路功能,只要表示式1返回true那麼表示式2就不會進行判斷,整體就會直接返回true;

3:邏輯非 !

(表示式1 != 表示式2) 邏輯非一般配合等號進行判斷,表示不等於。

if ( 3 != 5) //輸出不等於
二:位運算子

1:按位與 &

2:按位或 |

3:按位非 ~

4:按位異或 ^

首先通過乙個例子看一下他能否進行邏輯運算,並且他和邏輯運算子的區別;

var flag = false;

if (3 <

5 | (flag = true)) //輸出執行成功!

console.log(flag);//輸出true12345

從上邊的**可以看出使用按位或進行邏輯判斷是沒有短路功能的,所以他在效率上是低於邏輯運算子的;按位運算子可以用於邏輯運算,但是他的效率是低於邏輯運算子的,畢竟術業有專攻

接下來看一看按位運算子的主業!:

console.log(13 & 4);//輸出41
按位與,將表示式兩端的數字轉換成相同位數的二進位制字元,對相同位進行比較,如果全部為1,則返回1,否則返回0;

13: 1101

4 : 0100

使用按位與&返回值是 0100===4

2:按位或 |

console.log(13 | 4);//輸出131
按位或

,將表示式兩端的數字轉換成相同位數的二進位制字元,對相同的位進行比較,如果有1個為1則返回1,否則返回0;

13: 1101

4 : 0100

使用按位或 | 返回值是 1101===13

3:按位非 ~

執行按位非的結果就是返回數值的反碼。其本質是運算元的負值減1

在二進位制數中最左側的那一位代表的是正負號;

4:按位異或 ^

console.log(13 ^ 4);//輸出91
按位異或,將表示式兩端的數字轉換成二進位制字元,將相同位數的字元進行比較。相同返回0,不同返回1;

13: 1101

4  : 0100

使用按位異或  ^  返回值是 1001=== 9

查詢異或運算的簡便運算的口訣:

1:任何數異或0都是他本身;

2:任何數 異或 他本身都是0;

但是發現了乙個規律,就拿此例子來說:

13 ^ 4 = 9

9 ^ 13 = 4

9 ^ 4 = 13

邏輯運算子和位運算子

邏輯與 當且僅當左右兩個關係表示式均為true時返回true,否則返回false。邏輯或 當且僅當左右兩個關係表示式均為false時返回true,否則返回true。邏輯非!單目運算子,對關係表示式取反。與 兩個運算元二進位制形式的對應位中均為1時,相應的位返回1,否則返回0.例如128 129,返回...

位運算子和邏輯運算子的區別

一 邏輯運算子和位運算 1 位運算子 按位 與 規則 全一則一,否則為零 清零 按位 或 規則 全零則零,否則為一 按位 非 規則 類似於取反碼 按位 異或 敲黑板 規則 相同為零,不同為一 注釋 這裡講一下位運算子運作交換的語句 異或 x x y y x y x x y 宣告變數不寫了 親測 2 ...

php位運算子與邏輯運算 php 邏輯運算子 和

在php中,邏輯運算子無非是將值進行邏輯運算。還有其它用法嗎?先看看以下的 吧。提前給出結論就是 or 這兩種運算子在程式中可以加快php 的執行速度。test 李四 test 張三 test 張三來了 echo test 輸出 李四 test 李四 test 張三 test 張三不在這裡 echo...