2008年9月30日

你所不知道的 C#.NET -- &operator

今天來探討坎尼只用過一兩次的運算子 &
先來講它最基本的用法 邏輯運算
這邊要先來講解一下它的意義
不過由於這個又是另一篇課題  所以請參考 這篇
另外還有MSDN對&的解釋 這篇 和 這篇 

用&連接的兩邊 必須皆為 true  結果才會是 true
而且 這篇 裡會看到 0 及 1 的運算  此時要把 1 當成 true0當成 false
以上是位元運算的說明  先來看一下圖
可以看到  第一次運算結果 z 為 1 ,第二次 z 則為 9
這邊牽扯到 2 進位運算  坎尼用個簡單的圖來描述一下

0000 0001  -> 這是1的2進位表示式
0000 0011  -> 這是3的2進位表示式
-------------------------------------
0000 0001  -> 這是 結果 的2進位表示式 -> 答案為 1

0000 1111  -> 這是15的2進位表示式
0000 1001  -> 這是9的2進位表示式
-------------------------------------
0000 1001  -> 這是 結果 的2進位表示式 -> 答案為 9

計算方式就是將數字以2進位的方式展開  留下兩邊皆為1的數
以上就是&用於計算的表示式
下圖是 16 進位的計算  但是坎尼這邊還不是很熟  所以就保留跳過啦 XD
答案會是 0x0011 -> 17



上面看到了&用於計算 再來看&在判斷式裡的用法

上面是常用的 if 敘述句

上面將 &&換成&

這兩個寫法有什麼不同嗎?
坎尼先說  結果是一樣的
不過處理過程卻有一些差異在

一般常用的 && 在碰到 false 的條件式之後
會馬上跳開 if 判斷式(或是 while...)
不管接下來的條件式是不是 false
但是&卻是將所有條件式都判斷之後  再去判斷是否為 true

上圖範例中  &&在判斷 x==2 為 false 之後  隨即跳開
&卻要多判斷 y==1 為 false 然後發現結果為 false 之後  才跳開

其實這邊的&並不是連接
而且等兩邊的條件式判斷完  再做一次&計算
所以依上面範例來講 x==2 為 false,y==1為 false
false & false -> false

所以&其實還是遵守它的本分 做邏輯運算

9月的文章數真是多到嚇人
難得 Tim 會這麼努力的寫網誌  哈哈
坎尼最近再去問幾個朋友看看要不要加入.NET文章發表的行列

沒有留言:

Google Spreadsheet 裡用規則運算式

最近因為工作關係,遇到要用 Google Form 及 Google Sheet 所以研究了 Google Sheet 裡的一些 function 怎麼用 首先,分享一下如何在 Google Sheet 裡用規則運算 :D