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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章