Short Circuit 與位元運算子

這篇是比較偏程式設計的內容,如果大家有興趣的話,不妨來看看吧!

 

一般來說,我們如果寫條件的比較時,都會用到邏輯比較符號和位元運算符號,然而,這到底有什麼差異呢?一般常見的邏輯比較符號有:「&&」、「||」,而位元運算符號則有「&」、「^」、「|」等幾種,當然每個符號都具有他的意義,而一般人最常搞不清楚的「&」、「&&」的差異,以及「|」、「||」的差別!

 

就一般我們常用的short circuit,是指「&&」和「||」這兩個,以下就以「&」和「&&」為例,來替大家講解一下差異。

 

假設我們現在有兩個變數A和B,分別代表True和False,則使用「B&A」來說,B和A都會分別被運算到,然後再來比較。而「B&&A」來說,只會運算到B,因為B是False,所以整個條件式都是錯的,就不會再計算下去了。

為什麼會這樣呢?別忘了我們之前曾說,「&」這個符號代表的是位元運算子,而電腦又會以「0」代表「False」,所以電腦需要將全部的位元都抓出來,再做位元的「&」計算。

 

這麼說來,「&」和「&&」的用法為何呢?一般來說,「&」是建議用在位元運算上,而「&&」則是建議在運算式的比較上,這樣可以加快比較的速度喔!

 

同理,若使用「A|B」,A和B都會分別被運算到,然後再來位元的運算。而「A||B」來說,只會運算到A,因為A是True,所以整個條件式都是對的,就不會再進行後面條件(B)的判斷了。

 

另外,就數學上的意義來說,「A|B」所代表的是A和B的聯集,而「A&B」則是A和B的交集,這點是不可不知的唷!

Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments