iOS开发

swift高级运算符16进制的与运算

2017-06-29  本文已影响8人  qiulibi

最近刚学了swift的高级运算,但是开始对于看到例子中对16进制的的运算是看着一头雾水。

后来我在想一般的与运算是通过二进制运算,那16进制的估计也是通过二进制转换得到的结果。后来进过验算,发现一个规律,他不是直接将16进制转成二进制,因为根本就存储不下,而是通过每个位数的16进制转成二进制,比如说CC6699,转成二进制进行运算是应该是如下(注意:16进制的需要用4位二进制,所以不足4位的用0补齐): 

1100  1100  0110  0110  1001  1001

所以在swift中讲到的高级运算符中的一个例子中,

let pink:UInt32=0xCC6699

let redComponent = (pink &0xFF0000) >>16

那么0xCC6699和0xFF0000进行按位与运算就可以转成如下两个进行与运算:

1100  1100  0110  0110  1001  1001 

1111  1111  0000  0000  0000  0000

得到的结果应该为:

1100  1100  0000  0000  0000  0000

再将其转成16进制,即为:CC0000

与swift中的列子结果相符。

此算法要是有什么不正确的说法,欢迎大家指正,这只是个人的理解~

上一篇 下一篇

猜你喜欢

热点阅读