码迷,mamicode.com
首页 > 其他好文 > 详细

二十三、高级操作符

时间:2015-02-11 12:37:53      阅读:111      评论:0      收藏:0      [点我收藏+]

标签:

1. 概述

除了二、基本数据类型中所讲的运算符,Swift还有许多复杂的高级运算符,包括了C语和Objective-C中的位运算符和移位运算。

不同于C语言中的算术运算符 arithmetic operators ,Swift 的算术运算符默认是不可溢出的 overflow。溢出行为会被捕获并报告为错误。当然,如果你需要溢出的话,Swift也也提供了另一套默认允许溢出的算术操作符,如可溢出加 &+ 。所有允许溢出的操作符都是以 & 开始的。

当你定义自己的类、结构体、枚举的时候,可以提供它们的基本操作符的自定义实现。

在Swift中,你除了可以自定义这些已经预定义 predefined 的操作符的具体实现,你还可以自由定义中缀 infix、前缀 prefix、后缀 postfix 和赋值操作符,同时还能自定义这些操作符的优先级 precedence 和 关联值 associativity values。这些自定义的操作符可以像Swift预定义的操作符一样在代码中使用,甚至扩展一些已存在的类型,使它们支持这些自定义的操作符。

 

2. 位运算操作符(按位操作符) Bitwise Operators

位运算操作符允许你按位 bit 操作数据,一般使用在底层程序中,比如图形处理和驱动程序中。也可以用于处理元数据  raw data。

Swift 支持 C语言中所有的位运算符。

 

2.1 按位取反 Bitwise NOT Operator

按位取反运算符~ 对一个操作数的每一位都取反。

 技术分享

~ 是前缀 prefix 操作符,出现在操作数前面,之间没有空格 。

    let initialBits: UInt8 = 0b00001111 // 使用二进制数表示
    let invertedBits = ~initialBits // equals 11110000

 

2.2 按位与 Bitwise AND Operator

按位与运算符 & 对两个数进行操作,然后返回一个新的数,两个输入数的同一位都为1时才为1。

技术分享

    let firstSixBits: UInt8 = 0b11111100
    let lastSixBits: UInt8 = 0b00111111
    let middleFourBits = firstSixBits & lastSixBits // equals 00111100

 

2.3 按位或 Bitwise OR Operator

按位与运算符 | 对两个数进行操作,然后返回一个新的数,要两个输入数的同一位有一个为1时就为1。

技术分享

    let someBits: UInt8 = 0b10110010
    let moreBits: UInt8 = 0b01011110
    let combinedbits = someBits | moreBits // equals 11111110

 

2.4 按位异或 Bitwise XOR Operator

按位与运算符 ^ 对两个数进行操作,然后返回一个新的数,要两个输入数的同一位不相同时就为1,相同时为0。

二十三、高级操作符

标签:

原文地址:http://www.cnblogs.com/actionke/p/4285607.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!