Not or Xor
程式的重要組成之一,一定會提到判斷的對吧!在判斷的時候,常常會用到的就是 boolean
對吧!boolean 有 true
、 false
。在我們需要判斷的時候,常常會有 假如他沒有...
, 假如他不是...
那種否定
的判斷對吧! 沒錯、這次說的就是那個 not
歐~
Not
在 js 裡、 not 隨便用好像都可以…。從 !0
、 !null
、 !undefined
… 簡單的說,就是直得相反,完全沒有問題。如果真的要取得 bool
,其實就會比較建議使用 !!value
了,畢竟、 value
就是個值。
所以、 not
沒有什摸好說的啦~ 就是個很常用的東西。
Xor
比較有趣的其實是這個, ^
他其實是位元計算
,大部份的人應該對他們都比較陌生。但有一陣子、我實在是蠻著迷的,因為數位邏輯真的很有趣(但那好久以前了)。最近突然回憶起來,所以、覺得應該很適合當一篇小品。
xor 的定義…. 大家應該都蠻熟悉的(?) 就不多談了。
比較
他要拿來跟 not
比較的前提,當然就是只有一個位元的情況啦~ value ^= 1
這是我最常用的情形,因為這樣的寫法跟 not
有異曲同工之妙啦~ 但是他們的差異在…. xor 的結果是 number
, not 是 boolean
,但是在 js 的判斷上,其實不會有問題。
|
|
基本上、 xor 我大概就是用在這幾種情況,但、不太建議用在 非數字
的情境啦~!也許會有人想說、 not 用得好好的幹嘛用 xor ,這也太冷門的用法了吧?
是的、位元運算是比較少用沒錯,而我會用的情況通常是把它當作種類
、情形
這樣的前提下使用的。不過、用 boolean 也沒什摸不好啦~ 就是一種習慣,有時候、拿來操作也很方便。
|
|
用這種方法、在計算正反次數實在很方便啊啊啊啊!當然、其他有需要運算的情況有時候也是比if-else
要來得方便啦!所以、有時候我蠻喜歡用的。很久以前也試過用 bitwise 的方式導入流程,誒、還蠻有趣的,但是… 實在有點難懂~ XDDD 但蠻有趣的啦~ 然後、一個位元的這個方式,大概是我從當時玩到現在,覺得還是很好用的方式。也不會一堆 !
,看了也不舒服。
結論
雖然、位元操作可能是比較不直覺的方式,但、有時候真的很好用。沒有過的人可以試試看、真的還蠻不錯的,有時候真的很省事。不過、如果有閱讀上的困難,那…也不建議用啦~