- Swift 5從零到精通iOS開發訓練營
- 張益琿編著
- 1837字
- 2022-07-27 18:32:05
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 //創建布爾假變量
- Windows系統管理與服務配置
- Vue.js 3.0源碼解析(微課視頻版)
- 零基礎學Python數據分析(升級版)
- Nexus規模化Scrum框架
- QGIS:Becoming a GIS Power User
- 深入RabbitMQ
- 飛槳PaddlePaddle深度學習實戰
- 深入理解Android:Wi-Fi、NFC和GPS卷
- Natural Language Processing with Java and LingPipe Cookbook
- INSTANT Yii 1.1 Application Development Starter
- Learning Material Design
- JavaScript Unit Testing
- 菜鳥成長之路
- Python GUI設計:tkinter菜鳥編程
- HTML+CSS+JavaScript前端開發(慕課版)