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

最近刚学了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中的列子结果相符。


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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容