之所以寫這邊文章,是因為在某些情況下,運用掩碼來傳遞信息,顯得非常簡潔和方便.比如有2個參數共同確定1個實物.如牌,有花色和值.那么,傳2個參數,顯得非常繁瑣,而且容易出錯.
那么定義 黑 , 紅 , 梅 , 品 花色為 3,2,1, 0, 大小王為4 .1~k :分別為1~13.小王14 , 大王15 .大王最大,值的二進制正好為 : 1111(注意必須全為1 , 十進制為15) 即為牌值掩碼 , 則花色掩碼為 11110000(十進制為240)
(11111111^1111 = 11110000)
Console.WriteLine( ( 3<<4 ) + 1); Console.WriteLine( (49&240)/16 );//240 為花色掩碼 11110000 獲得花色 Console.WriteLine(49&15);//15 為牌值掩碼 獲得牌值
上面代碼 : 3花色 , 1 : 牌值
<<4 : 花色掩碼 11110000 后面的0占4字節
至于/16 : 關于牌值的掩碼 : 1111(二進制) 占4bit,2^4 = 16
得到49 , 然后分別取得花色和值
可以做一個另外的一個測試 :
低位掩碼 : 11(3) 高位掩碼 : 1100(12)
測試代碼如下 :
Console.WriteLine((2<<2)+1); Console.WriteLine((9&12)/4); Console.WriteLine(9 & 3);
得到結果:
OK , 牌花色“2” , 值 “1”
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。