官术网_书友最值得收藏!

2.3 初識基本數據類型

本節主要向讀者介紹整型、浮點型、布爾型數據在Swift語言中的應用。

2.3.1 數學進制與計算機存儲原理

所謂進制,是數學計算中人為規定的一套進位規則。生活中,人們習慣使用十進制進行數據計算,例如到文具店買3支鉛筆、到菜市場買菜花費5元3角等。在數學與計算機領域除了十進制之外,二進制、八進制、十六進制的應用也十分廣泛,進制的實質即是在數據計算時逢幾進一(十進制是逢十進一,十六進制是逢十六進一,二進制就是逢二進一,以此類推,x進制就是逢x進位)。

計算機是由邏輯電路組成的,邏輯電路通常只有兩個狀態,即開關的接通與斷開,正好可以表示兩種狀態(0和1),對計算機而言,采用二進制不僅能夠簡化運算法則,提高運算效率,更具有很高的抗干擾能力和可靠性,因此二進制也被稱為“機器的語言”。

Swift語言支持開發者使用多種進制進行數據的定義與計算,默認為十進制,如果有特殊需求,可以通過在數據前面加前綴的方式實現,示例如下:

    var type_10 = 17;  //十進制的17
    var type_2 = 0b10001 //二進制的17
    var type_8 = 0o21  //八進制的17
    var type_16 = 0x11 //十六進制的17

在進一步了解了數據類型的相關知識外,讀者首先應該清楚幾個概念。計算機內存中最小的數據運算單元是一個二進制位(bit),其只有兩種狀態:0或者1。字節(B)是最小的數據單元,1個字節由8個二進制運算位組成。針對無符號數來說,1個字節最大可以表示的數為二進制11111111,即十進制數255。讀者如果有一些編程經驗,一定會對ASCII碼十分熟悉,ASCII碼的存儲空間即1個字節的大小,因此其最多可以表示256個字符。在字節之上,還有千字節(KB)、兆字節(MB)、吉字節(GB)、太字節(TB)等,它們之間的換算關系如下:


1B=8bit

1KB=2^10B

1MB=2^10KB

1GB=2^10MB

1TB=2^10GB

1PB=2^10TB

2.3.2 整型數據

Swift語言中的整型數據分為有符號整型數據與無符號整型數據。所謂有符號與無符號,通俗的理解即為分正負號與不分正負號。

對于無符號整型,Swift中提供了5種類型。其中,4種存儲空間的數據類型,分別對應占用8位、16位、32位、64位而進行運算位的存儲空間。使用Xcode開發工具創建一個新的Playground,命名為BasicDataType,編寫如下演示代碼:

    //8位無符號整型數的最大值 255
    var a1 = UInt8.max
    //16位無符號整型數的最大值 65535
    var a2 = UInt16.max
    //32位無符號整型數的最大值 4294967295
    var a3 = UInt32.max
    //64位無符號整型數的最大值 18446744073709551615
    var a4 = UInt64.max

上面代碼中創建了4個變量a1、a2、a3、a4。在Swift語言中,整型數據類型實際上是采用結構體的方式實現的,其中max屬性可以獲取到當前類型的最大值。讀者可能會有疑問,在實際開發中,到底應該選擇哪一種類型來表達無符號整型呢?上面有提到,Swift語言中的無符號整型實際有5種,還有1種為UInt類型,這種類型編譯器會自動適配,在64位的機器上為UInt64,在32位的機器上為UInt32,示例代碼如下:

    //獲取數據類型所占位數 在64位機器上UInt占8字節64位
    var a5 = MemoryLayout<UInt>.size

MemoryLayout是Swift標準庫中定義的一個枚舉,顧名思義就是用于獲取內存相關信息。MemoryLayout<UInt>是一種泛型的用法,調用其size屬性可以獲取某種數據類型所占內存空間的字節數。

有符號整型數據與無符號整型數據十分類似,只是其首位二進制位為符號位,不納入數值計算,示例代碼如下:

與max屬性對應,min屬性用于獲取整型數據的最小值。

2.3.3 浮點型數據

浮點型數據用來表示一些小數。浮點型數據分為單精度浮點型與雙精度浮點型,分別用Float與Double表示,示例代碼如下:

    var b = MemoryLayout<Float>.size    //4個字節
    var b1 = MemoryLayout<Float32>.size //4個字節
    var b2 = MemoryLayout<Float64>.size //8個字節
    var b3 = MemoryLayout<Float80>.size //16個字節
    var c = MemoryLayout<Double>.size  //8個字節

Swift語言中也支持使用科學計數法來表示數字,在十進制中使用e來表示10的n次方,在十六進制中使用p來表示2的n次方,示例代碼如下:

    var sum = 1.25e3 //1.25*(10^3) = 1250
    var sun2 = 0x1p3 //1*(2^3) = 8

Swift語言中還有一個十分有意思的特性,無論是整型數據還是浮點型數據,都可以在數字前加任意個0來進行位數填充,也可以在數字中加入下劃線進行分隔,進而增加可讀性,這些操作并不會影響原始數值,卻提高了對開發者的編程友好性,使代碼的結構更加清爽,示例如下:

2.3.4 布爾型數據

布爾類型很多時候也叫作邏輯類型,熟悉Objective-C編程語言的讀者可能會了解,在Objective-C語言中,BOOL類型其實并非嚴格意義上的邏輯布爾類型,Objective-C中可以使用0與非零來表達邏輯假與邏輯真。而在Swift語言中則不同,Swift語言的Bool類型十分嚴格,只有true和false兩種值,分別表示真和假。同樣,在Swift語言的條件語句以及需要進行邏輯判斷的語句中,所使用的條件表達式的值也必須為Bool類型。

創建真與假的布爾值示例代碼如下:

    var bool1 = true   //創建布爾真變量
    var bool2 = false  //創建布爾假變量
主站蜘蛛池模板: 平谷区| 治多县| 宝山区| 台州市| 澄城县| 长葛市| 涡阳县| 余姚市| 车险| 津市市| 商都县| 通化市| 云和县| 砀山县| 高密市| 翁源县| 商水县| 信丰县| 清流县| 方城县| 米林县| 宜章县| 永春县| 鄂尔多斯市| 色达县| 亳州市| 苗栗市| 都江堰市| 梨树县| 宣恩县| 阿勒泰市| 双峰县| 花莲县| 锡林郭勒盟| 武定县| 哈巴河县| 麻城市| 高台县| 兰溪市| 田林县| 墨竹工卡县|