2.1算术运算符
Swift支持所有的基本算术运算符,这些算术运算符用于执行基本的数学运算:加(+),减(-),乘(*),除(/),求余(%)等。
2.1.1四则运算
+:加法运算符
- :减法运算符
* :乘法运算符
/ :除法运算符
let x = 1 + 2 //x = 3
var y = 5 - 3 //y = 2
var ab = 2 * 3 //ab= 6
var c = 10.0 / 2.5 //c=4.0
let c1:Character = "a"
let c2:Character = "b"
var s:Character = c1 + c2 //字符也能四则运算
但和c中四则运算不同,Swift中数值默认是不允许溢出的
如下:
let x:Byte = 2222 // 2222超出Byte范围
var y:Byte = 20*30 // 20*30超出Byte范围
2.1.2 %:取余运算符
求余运算(a % b)是计算b的多少倍刚刚好可以容入a,返回多出来的那部分(余数)。
整型的取余与c相同
a%b : a = ( b*倍数 ) + 余数浮点取余:
Swift的求余运算符完全支持对浮点数求余。
var remainder = 3 % 2
print("remainder is '\(remainderA)'.") // 出 remainder is '1'.
var remainder1 = 5.2 % 3.1
print("remainder1 is '\(remainder1)'.") // 出 remainder1 is '2.1'.
2.1.3 ++ or - - :自增和自增运算符
Swift也能对变量本身加1或减1的自增(++)和自减(–)的运算符。操作对象可以是整形和浮点型。
- 当++前置的时候,先自増 再返回。
- 当++后置的时候,先返回 再自增。
2.1.4 ±:正负号
let a = -6 //
let b = +a // b 等于 -6
let c = -a // c 等于 6
负号在操作数前会使其取反
正号在操作数前无影响
2.2算术赋值运算符
赋值运算(a = b),表示用b的值来初始化或更新a的值:
let b = 10
var a = 5
a = b
// a 现在等于 10
如果赋值的右边是一个多元组,它的元素可以马上被分解多个常量或变量:
let (x, y) = (1, 2)
// 现在 x 等于 1, y 等于 2
与 C 语言和 Objective-C 不同,Swift 的赋值操作并不返回任何值。所以以下代码是错误的:
if x = y {
// 此句错误, 因为 x = y 并不返回任何值
}
这个特性使你无法把(==)错写成(=),由于if x = y是错误代码,Swift帮你避免此类错误的的发生。
2.3关系运算符
等于==
不等于!=
大于>
小于<
大于等于>=
小于等于<=
如:
1 == 1 // true, 因为 1 等于 1
2 != 1 // true, 因为 2 不等于 1
2 > 1 // true, 因为 2 大于 1
1 < 2 // true, 因为 1 小于2
1 >= 1 // true, 因为 1 大于等于 1
2 <= 1 // false, 因为 2 并不小于等于 1
另外
1 === 1 //true,意为恒等
5 !== -5 //true,意为不恒等
2.4逻辑运算符
符合布尔运算 1:true,0:false.
- 逻辑非
!a
真值取反,0 变为1,1变为0 - 逻辑与
a&&b
一假即假 - 逻辑或
a||b
一真即真
2.5位运算符
数在计算机中都是以二进制的形式储存。
位运算就是直接对内存中的二进制位进行操作。
~
&
|
^
分别为 取反,按位与,按位或,按位异或
左移运算符 <<
和右移运算 符>>
分别扮演着乘2和除2的角色
- 按位与
&
参加运算的两个数据,按二进制位进行“与”运算。如果两个相应的二进制位(bit)都为1,则该位的结果值为1;否则为0。这里的1可以理解为逻辑中的true,0可以理解为逻辑中的false.
5 & 28(伪)
-------
00101(5)
11100(28)
-------
00100(4)
- 按位或
|
如果两个相应的二进制位(bit)都为0,则该位的结果值为0;否则为1。
5 | 28(伪)
-------
00101(5)
11100(28)
-------
11101(29)
- 异或
^
相应位相 异 ,则结果为1,否则0.
5 ^ 28(伪)
-------
00101(5)
11100(28)
-------
11001(25)
- 按位取反
~
取反运算符~
为单目运算符,右结合性,作用是对参与运算的二进制位(bit)取反,1变为0,0变为1.
~ 0000 1001
---------------------
1111 0110
在二进制位运算时,还要注意空位,按照1字节(byte)=8位(bit)用0补全,注意数的位数
- 左 右移位符
<< >>
左移运算符<<
用来把操作数的各个二进制位全部左移若干位,高位丢弃,低位补0。
9<<3
<<0000 1001 (9)
-----------------------------------------------------------------------------------
0100 1000 (72)
9*9*9=27
如果数据较小,被丢弃的高位不包含 1,那么左移 n 位相当于乘以 2 的 n 次方。
右移运算符>>
用来把操作数的各个二进制位全部右移若干位,低位丢弃,高位补1或0。
如果数据的最高位是 0,那么就补 0;
如果最高位是 1,那么就补 1。
9>>3
>> 0000 1001 (9)
-----------------------------------------------------------------------------------
0000 0001 (1)
如果被丢弃的低位不包含 1,那么右移 n 位相当于除以 2 的 n 次方(但被移除的位中经常会包含 1)。