[Swift] 2.0 运算符

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)。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值