之所以写这边文章,是因为在某些情况下,运用掩码来传递信息,显得非常简洁和方便.比如有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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。