390 likes | 469 Views
第三章 資料型別與運算子. 數字系統 資料型別 運算子. 個位數. 百位數. 十位數. 第三章 資料型別與運算子. 數字系統 電腦世界是個只有 0 和 1 的世界,必須把資料變成一堆的 0 和 1 ,這樣電腦才看得懂。 「數字系統」指的是我們用來表示數字的方法。 523 的真正意思. 二進位制. 十進位制. 第三章 資料型別與運算子. 數字系統 ( 續 ) 二進位數字 1011. 第三章 資料型別與運算子. 數字系統 ( 續 ) 十進位的數字轉成二進位的數字. 第三章 資料型別與運算子. 數字系統 ( 續 )
E N D
第三章 資料型別與運算子 數字系統 資料型別 運算子
個位數 百位數 十位數 第三章 資料型別與運算子 • 數字系統 • 電腦世界是個只有0和1的世界,必須把資料變成一堆的0和1,這樣電腦才看得懂。 • 「數字系統」指的是我們用來表示數字的方法。 • 523的真正意思
二進位制 十進位制 第三章 資料型別與運算子 • 數字系統 (續) • 二進位數字1011
第三章 資料型別與運算子 • 數字系統 (續) • 十進位的數字轉成二進位的數字
第三章 資料型別與運算子 • 數字系統 (續) • 在電腦世界中,我們把二進位的1個位數叫做1個bit,中文翻譯成「位元」。 • 二進位數1101,就是有4個bit。 • 以13這個十進位的數字來說,很明顯的,最少需要4位數,才能放得下轉換成二進位後的那一串0與1,也就是1101。 • 我們需要準備多少個bit來存放資料?
第三章 資料型別與運算子 • 資料型別 • 資料並不是只有整數而已,還有許多不同形式的資料存在,例如含有小數點的數字、文字等。 • 不同形式的資料,有各自不同的方式來轉換成電腦看得懂的0和1。 • 為了處理上的需要,我們把各種資料加以分類,區分為不同的「資料型別」。
第三章 資料型別與運算子 • 資料型別 (續) • 用來描述資料型別的表格 • 「佔用記憶體」指的是,我們需要分配多少儲存空間,也就是記憶體,來存放一筆這個資料型別的資料。 • 因為Byte這個擁有1 byte儲存空間的資料型別,是用來表示不帶正負號的整數,而且依照定義,1 byte = 8 bit,所以我們可以算出它的數值範圍。 • 一個含有8個位數的二進位數,最小和最大的數值分別是
第三章 資料型別與運算子 • 資料型別 (續) • 25610=1000000002 ,需要9個bit才能放得下。 • Byte只擁有8 bit的儲存空間,所以放不下256。硬塞的話,會出現叫做「溢位」的錯誤。 • 「溢位」指的就是說,要存放的資料太長,已經從我們所準備的儲存空間中滿出來了。換句話說,有一部份的資料因為滿出來而流失不見了。
第三章 資料型別與運算子 • 資料型別 - 數字資料型別 • 用來處理不同表示法的數字。 • 整數類資料型別:用來表示正整數、負整數,和0等不含小數部分的數字。 • 不帶正負號的整數型別。 • 帶正負號的整數型別。 • 非整數類資料型別:用來 表示同時含有整數和小數 部分的數字。 E代表10的幾次方。 1.23E+5 = 1.23×105 1.23E-5 = 1.23×10-5
第三章 資料型別與運算子 • 資料型別 - 字元資料型別 • 用來處理可以列印和可以顯示的字元,例如英文字母、阿拉伯數字、$#~!<>?(){}[]&^%……等等。 • 一大串字元叫做字串。 • 在VB裡頭,用雙引號包起來的,就是字串。例如,"abc"是字串,而"123"也是字串,而不是數目字123。
第三章 資料型別與運算子 • 資料型別 - Boolean資料型別 • 專門用來處理只包含兩種狀態的資料,例如真或假、是或非、開或關等。
第三章 資料型別與運算子 • 資料型別 - Date資料型別 • 專門用來處理日期、時間等資料。
第三章 資料型別與運算子 • 資料型別 - Object資料型別 • 這個資料型別可以處理任何型別的資料,不過要注意的是,在不同的作業系統上,它佔用的記憶體是不一樣多的。
第三章 資料型別與運算子 • 運算子 • 運算子就是+、-、×、÷這一類的東西。 • 30 + 25,「+」就是運算子,而30和25叫做運算元。
第三章 資料型別與運算子 • 運算子 - 算數運算子 • 用來進行數學計算的運算子。
第三章 資料型別與運算子 • 運算子 - 比較運算子 • 比較兩個運算式,比較的結果會用Boolean值,也就是True或False來表示。
第三章 資料型別與運算子 • 運算子 - 串連運算子
第三章 資料型別與運算子 • 運算子 - 邏輯運算子 • 用來處理邏輯關係的運算子。 • 在表示邏輯關係以及邏輯運算子的作用的時候,我們會用Boolean值,也就是True或False來表示。 • True有時候會簡寫成T,而False則簡寫成F。 • 也有用1來表示True,而0則表示False的用法。
第三章 資料型別與運算子 • 運算子 - 邏輯運算子 (續) • 邏輯運算子And的真值表
第三章 資料型別與運算子 • 運算子 - 邏輯運算子 (續) • 邏輯運算子Or的真值表
第三章 資料型別與運算子 • 運算子 - 邏輯運算子 (續) • 邏輯運算子XOr的真值表
第三章 資料型別與運算子 • 運算子 - 邏輯運算子 (續) • 範例3.3.4-1
第三章 資料型別與運算子 • 運算子 - 邏輯運算子 (續) • 邏輯運算子Not的真值表 範例3.3.4-2
第三章 資料型別與運算子 • 運算子 - 邏輯運算子 (續) • 最少運算(short circuit)邏輯運算子AndAlso
第三章 資料型別與運算子 • 運算子 - 邏輯運算子 (續) • 最少運算(short circuit)邏輯運算子OrElse
第三章 資料型別與運算子 • 運算子 - 邏輯運算子 (續) • 範例3.3.4-3
第三章 資料型別與運算子 • 運算子 - 位元運算子 • 在VB中,And、Or、Xor、Not這四個運算子,除了可以處理邏輯關係之外,也可以用來處理數值關係。 • 一個位元裡面放的值,不是0就是1,而邏輯上的True和False,也可以用1和0來表示。 • 在利用And、Or、Xor、Not這四個運算子處理兩個位元之間的關係時,只要把原來真值表中的True改成1,而False改成0,就可以了。 • 因為And、Or、Xor、Not這四個運算子,也可以拿來處理位元之間的關係,所以也被歸類為位元運算子。
第三章 資料型別與運算子 • 運算子 - 位元運算子(續) • And、Or、Xor這三個運算子,用來處理兩個位元之間的關係時,它們的真值表為
第三章 資料型別與運算子 • 運算子 - 位元運算子(續) • Not運算子,用來處理兩個位元之間的關係時,真值表為
第三章 資料型別與運算子 • 運算子 - 位元運算子(續) • 10 And 8 = 8
第三章 資料型別與運算子 • 運算子 - 位元運算子(續) • 範例3.3.5-1
第三章 資料型別與運算子 • 運算子 - 位元運算子(續) • 範例3.3.5-2
第三章 資料型別與運算子 • 運算子 - 位元位移運算子 • 位元位移運算子有「<<」和「>>」兩種。 • 把192這個數字放到Short這個資料型別裡頭,以二進位來表示192的時後,就會得到16位數的0000 0000 1100 0000。 • 192 << 4就會得到0000 1100 0000 0000,也就是十進位的3072。
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0000 0000 第三章 資料型別與運算子 • 運算子 - 位元位移運算子(續) • 192 << 4 向左移動4個位置 右邊空出來的補0 左邊跑出去的丟掉
第三章 資料型別與運算子 • 運算子 - 位元位移運算子(續) • 運算子「>>」的作用,恰好和「<<」反方向,會把所有的位元向右移動。在移動的時後,右邊跑出去的,就丟掉,而左邊空出來的,就都補0。
第三章 資料型別與運算子 • 運算子 - 運算子優先順序 • 在算5+3×2的時候,我們會先算出3×2,然後再加上5,最後得到11。 • +和×都是數學上的運算子,而誰要先做誰要後做這樣的規則,就叫做「運算子優先順序」。 • 以加減乘除來說,乘除的優先順序要比加減來得高,所以我們要先做乘除的部分。
第三章 資料型別與運算子 、 、 • 運算子 - 運算子優先順序 (續) • VB的「運算子優先順序」如右表。 • 優先順序數字越小的,就要越優先處理。 • 優先順序相等的,處理順序就是由左到右。 • 小刮號「( )」刮起來的部分,優先順序是最高的,要優先處理。
第三章 資料型別與運算子 、 、 • 運算子 - 運算子優先順序(續) • 範例3.3.7-1 • 3 + 2^3 Mod 2 答:3 + 2^3 Mod 2 = 3 + 8 Mod 2 = 3 + 0 = 3 • 64/8/2 答:64/8/2 = 8/2 = 4 • 64/8*2 答:64/8*2 = 8*2 = 16
第三章 資料型別與運算子 、 、 • 運算子 - 運算子優先順序(續) • 範例 • ((3 + 2)*2)^2 答:((3 + 2)*2)^2 = (5*2)^2 = 10^2 = 100 • 3 > 2 And 2 > 0 答:3 > 2 And 2 > 0 ==> True And True ==> True • Not (3 > 2 Or 1 > 0) 答:Not (3 > 2 Or 1 > 0) ==> Not (True Or True) ==> Not True ==> False