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

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種存儲空間的數據類型,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屬性用于獲取整型數據的最小值。

提示

如果我們可以明確當前場景不會出現負數,則可以使用UInt類型,更多時候如果我們不能夠保證,最好使用Int類型,即我們存儲的數據是非負的,對數值統一使用Int類型有助于數據間的傳遞和轉換。

2.3.3 浮點型數據

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

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

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

提示

Double類型比Float類型有著更高的精度,除了某些特殊場景外,我們更推薦使用Double類型來定義浮點數。

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

2.3.4 布爾型數據

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

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

     var bool1 = true   //創建布爾真變量
     var bool2 = false  //創建布爾假變量
主站蜘蛛池模板: 卢龙县| 杭州市| 金平| 邢台县| 梧州市| 七台河市| 黄骅市| 兴仁县| 星子县| 定州市| 怀化市| 班玛县| 舒城县| 务川| 蚌埠市| 望谟县| 昌吉市| 牡丹江市| 乐至县| 开江县| 布拖县| 洞口县| 武定县| 鄂尔多斯市| 德昌县| 罗平县| 开阳县| 海原县| 伊吾县| 康乐县| 玉溪市| 慈利县| 沭阳县| 清水河县| 汝城县| 牙克石市| 板桥市| 华阴市| 江永县| 天津市| 自贡市|