先來講它最基本的用法 邏輯運算
這邊要先來講解一下它的意義
不過由於這個又是另一篇課題 所以請參考 這篇
以上是位元運算的說明 先來看一下圖
可以看到 第一次運算結果 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
上面看到了&用於計算 再來看&在判斷式裡的用法
上面是常用的 if 敘述句
上面將 &&換成&
這兩個寫法有什麼不同嗎?
坎尼先說 結果是一樣的
不過處理過程卻有一些差異在
一般常用的 && 在碰到 false 的條件式之後
會馬上跳開 if 判斷式(或是 while...)
不管接下來的條件式是不是 false
但是&卻是將所有條件式都判斷之後 再去判斷是否為 true
上圖範例中 &&在判斷 x==2 為 false 之後 隨即跳開
&卻要多判斷 y==1 為 false 然後發現結果為 false 之後 才跳開
其實這邊的&並不是連接用
而且等兩邊的條件式判斷完 再做一次&計算
所以依上面範例來講 x==2 為 false,y==1為 false
false & false -> false
所以依上面範例來講 x==2 為 false,y==1為 false
false & false -> false
所以&其實還是遵守它的本分 做邏輯運算
9月的文章數真是多到嚇人
難得 Tim 會這麼努力的寫網誌 哈哈
坎尼最近再去問幾個朋友看看要不要加入.NET文章發表的行列
沒有留言:
張貼留言