Java編程那些事兒——計算機軟件基本概念
Java, Java培訓, Java基礎, Java學習, Java教程
第一章 計算機基礎
本部分主要介紹計算機相關的知識,重點介紹和軟件編程相關的基礎知識。
其實對於編程來講,計算機的基礎是越多越深就越好,可是受時間和精力的限制,每一個人瞭解的其實仍是頗有限,下面就主要編程中經常使用的基礎知識,遺漏的地方請你們積極指正和補充。
計算機本質的結構就是將全部的內容數據化,其實軟件編程也採用的是一樣的邏輯,把各類須要保存的狀態數字化。
1.1 計算機軟件基本概念
軟件的概念
你們都知道,計算機分爲硬件和軟件,其實看得見摸得着的算硬件,好比硬盤、主板什麼的,摸不着的就算軟件了。
按照專業點的說法,軟件就是一組指令序列,那麼如何理解他呢?舉個基本的例子,好比你們到學校報名,學校會給你一個單子,通常上面會寫,首先到哪裏繳費、而後領證件,體檢什麼的,反正至少也有那麼10多條,若是把每條操做都當作指令的話,這個就是軟件的本質。
或者按照馮。諾伊曼的計算機體系,計算機就是接受輸入,進行處理,反饋結果,其實軟件也是這樣,提供界面接受用戶的輸入,根據邏輯進行處理,把結果反饋給用戶,不管是普通的軟件仍是遊戲都是這樣。
計算機爲何是二進制的?
衆所周知,如今的計算機都是以二進制存儲和運算數據的,那麼爲何是二進制而不是常見的十進制呢?
緣由很簡單,由於如今的計算機是電子計算機,內部只有兩個狀態,因此就依據這兩個狀態建立了一種新的進制形式——二進制。這樣極大的簡化了電子計算機的結構,能夠用電流的有無、光線的有無以及磁性的有無等狀態來實現數學上的二進制。數學上用0和1來分別表明這兩個狀態罷了。
固然,隨着科學的發展,之後計算機再也不是電子計算機了,那麼二進制也可能就消失了。
計算機存儲單位
既然計算機是電子計算機了,那麼存儲的最小單位就是一個二進制位,英語是bit,簡寫成b.一位只有2個值,0或者1.因爲位的單位過小,因此就設計了另一個概念——字節,英語是byte,簡寫成B.規定1個字節是8位,即1B=8b.好比你們接觸的8位機、16位機等等,就是指CPU一次處理的最小的數據單位。
再大點的單位就依次是KB、MB、GB和TB了,他們之間的進制都是2的10次方,也就是1024,也就是1KB=1024B,1MB=1024KB.這裏簡單的說一個實際問題,你們買硬盤的時候,好比160GB,這裏廠商使用的進制是1000,而不是1024,因此160個GB格式化之後就大概只有:(160 X 1000 X1000 X1000) / 1024/1024/1024 = 149GB
Java編程那些事兒——進制的概念
Java, Java培訓, Java基礎, Java學習, Java教程
1.2 進制的概念
由於不可能爲每一個數值都創造一個符號,因此須要用基本數字組合出複合的數值,這樣就有了進制的概念。
其實全部進制都是人爲的創造,都是用來計數方便的。如今最經常使用的進制是十進制,固然其它的進制也在使用中。例如「半斤八兩」這個成語,就反映了古代一斤等於十六兩的概念,也就是十六進制計數方式。
計算機編程中經常使用的進制有二進制、八進制、十進制和十六進制,十進制仍是最主要的表達形式。在編程中,你們書寫的數值默認爲十進制。
對於進制,有兩個最基本的概念:基數和運算規則。
l 基數基數指一種進制中組成的基本數字,也就是不能再拆分的數字。例如十進制是0-9,二進制是0和1,八進制是0-7,十六進制是0-9,A-F(大小寫都可)。或者能夠簡單的這樣記憶,假設是n進制的話,基數就是[0,n-1]的數字,基數的個數和進制值相同,十進制有十個基數,依次類推。
l 運算規則運算規則就是進位或借位規則,這個相似於通常計算機書籍中位權的概念,例如對於十進制來講,該規則是「滿十進一,借一當十」,也就是低位的數字滿十了向高位進一,從高位借到的一,至關於低位上的十。其它的進制也是這樣,對於二進制來講,就是「滿二進一,借一當二」,八進制和十六進制也是這樣。
在數學上表示一個數字是幾進制,一般使用以下格式:[數值]進制數,例如[10]2 表示二進制數值10. 1.2.1 二進制二進制是計算機內部數據表示的形式,因此學習計算機編程必須熟悉二進制。熟悉二進制有如下幾個用途:l 更容易理解計算機的數據存儲方式計算機內部的不少轉換,例如數據類型之間的強轉,均可以用二進制解釋最終的結果的值。
1.2.1二進制
的運算速度高二進制的運算速度比十進制高的多。例如求2的n次方,經過移位實現的效率比數學方法高效。
l 使用二進制數值進行數據存儲以二進制的形式存儲數值,一個是比較節約資源,可使用二進制的位來存儲信息,例如常見的硬件控制信息,都是二進制的形式進行提供的。
如前所述,二進制包含0和1兩個基數,運算規則是「滿二進一,借一當二」,下面簡單的介紹一下二進制的計數方式。
例如十進制的0-9用二進制進行表達,則依次是:0,1,10,11,100,101,110,111,1000,1001說明:數值之間使用逗號進行間隔。
下面是二進制的一些基本運算結果:
加法運算
0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 10
減法
0 – 0 = 0
0 – 1 = -1
1 – 0 = 1
1 – 1 = 0
乘法
0 × 0 = 0
0 × 1 = 0
1 × 0 = 0
1 × 1 = 1 l
除法
0 / 0 無心義
0 / 1 = 0
1 / 0 無心義
1 / 1 = 1
如下是一些符合的表達式:110 + 111 = 1101這些基本的運算結構在實際開發中通常不會直接用到,可是經過這些內容能夠加深對於二進制概念的理解。
1.2.2 二進制和十進制之間的轉換
因爲計算機內部的數據是以二進制進行表達的,而十進制又是平常生活中最經常使用的進制,因此它們之間常常須要進行轉換。下面介紹一下轉換的方式。
1.2.2.1 十進制轉換爲二進制
十進制整數轉換爲二進制有三種方法,分別是除二取餘、計算器轉換和經驗法。十進制小數的轉換方法最後作簡單的介紹。
1. 除二取餘法除二取餘法是轉換時的最基本方法,也是最通用的方法。規則爲:使用十進制和2去除,取每次獲得的商和餘數,用商繼續和2相除,直到商爲零爲止,第一次獲得的餘數做爲二進制的低位,最後一次獲得的餘數做爲二進制的高位,由余數組成的數字就是轉換後二進制的值。例如十進制的13轉換爲二進制的計算步驟以下:
商 餘數
13 / 2 = 6 1
6 / 2 = 3 0
3 / 2 = 1 1
1 / 2 = 0 1
則計算的最終結果就是1101. 2.
計算器轉換
Windows操做系統中的計算器也能夠很方便的實現進制之間的轉換。在程序菜單中附件子菜單中打開計算器,從打開的計算器的查看菜單中,選擇「科學型」,輸入你要轉換的十進制的數字,例如13,而後界面上數字顯示框西側的「二進制」,則轉換後的數值就直接顯示在計算器中。
經驗法
對於二進制熟悉之後,那麼計算十進制對應的數字能夠經過一些基本的數學變換來實現,在使用經驗法之前,必須熟記2的0-10次方對應的十進制的值,依次是:1,2,4,8,16,32,64,128,256,512,1024則轉換一些特殊的數字時能夠極大的提升轉換速度,例如數字65,則能夠這樣轉換:65 = 64 + 1 64對應的二進制形式爲1000000 1對應的二進制形式爲1則65的二進制形式爲1000001這個只適合轉換一些特殊的數字,適應性沒有除二取餘法普遍。
十進制小數的轉換採用的通常方法是乘二取整法,規則爲:對於小數部分先乘二,而後得到運算結果的整數部分,而後將結果中的小數部分再次乘二,直到小數部分爲零爲止,則把第一次獲得的整數部分做爲二進制小數的高位,後續的整數部分做爲地位就是轉換後獲得的二進制小數。須要說明的是,有些十進制小數沒法準確的用二進制進行表達,因此轉換時符合必定的精度便可,這也是爲何計算機的浮點數運算不許確的緣由。
例如0.25轉換爲二進制小數的步驟以下:整數部分0.25 × 2 = 0.5 0 0.5 × 2 = 1.0 1則0.25轉換爲二進制小數爲0.01若是一個十進制數字既有整數部分,也有小數部分,則分開進行轉換便可。
1.2.2.2 二進制轉換爲十進制
二進制轉換爲十進制採用的方法是:數字乘位權相加法。下面先以十進制爲例來講明該方法,例如十進制數字345的值,5的位權是1,4的位權是10,3的位權是100,則有以下表達式成立: 345=5 × 1 + 4 × 10 + 3 × 100,這就是數字乘位權相加法的原理。
其實對於十進制整數的位權頗有規則,從右向左第n位的位權是十的(n-1)方,例如個位是10(1-1),十位是10(2-1),依次類推。那麼二進制整數的位權規律和這個一致,也就是從右向左第n位的位權是二的(n-1)方。
例如二進制整數1011轉換爲十進制的表達式爲:[1011]2 = 1 × 20 + 1 × 21 + 0 × 22 + 1 × 23 = 1 + 2 + 0 + 8=11而對於二進制的小數,也是採用同樣的方法,只是二進制小數的位權規則爲,小數點後第一位小數的位權是2的-1次方,第二位是2的-2次方,依次類推。
例如二進制小數0.1101轉換爲十進制小數的表達式爲[0.1101]2=1 ×2-1 + 1 ×2-2 + 0 × 2-3 + 1 × 2-4 = 0.5 + 0.25 + 0 + 0.0625=0.8125同理,若是二進制包含整數和小數部分,則分開進行轉換便可。
1.2.3 二進制和八進制、十六進制之間的轉換
雖然二進制是計算機內部的數據表達形式,可是因爲二進制基數太少,則致使數字比較長,爲了簡化數字的書寫,就建立了八進制和十六進制。八進制和十六進制就是對二進制的簡化,因此二進制到八進制和十六進制的轉換很是簡單。
二進制整數轉換爲八進制的方法是「三位一併」,也就是從右側開始,每3位二進制數字轉換爲八進制的一位,依次類推,由於二進制的三位數字能夠表達的區間是 000-111,恰好和0-7重合。例如:二進制的10111轉換爲8進製爲:最後三位111轉換爲7,前面的數字10轉換爲2,則轉換後獲得的八進制數字爲27.二進制整數轉換爲十六進制的方法是「四位一併」,例如10111轉換爲十六進制是0111轉換爲7,1轉換爲1,則轉換後獲得的十六進制數字是 17.二進制小數轉換爲八進制的方法也是「三位一併」,只是轉換時從小數的高位開始,也就是小數的左側開始。例如0.10111轉換爲八進制是101轉換爲5,110轉換爲6,則轉換獲得的八進制小數爲0.56.須要特別注意的是,小數最後若是不足三位,必定要在後續補零之後再進行轉換。
二進制小數轉換爲十六進制的方法也是「四位一併」,只是轉換時從小數的高位開始。例如二進制小數0.10111轉換爲十六進制小數爲,1011轉換爲b,1000轉換爲8,則轉換後獲得的十六進制是0.b8.若是二進制數包含整數和小數部分,則分開進行轉換。編程
瞭解更多詳情請登陸超人學院網站http://www.crxy.cn或者每週日晚八點半相約免費公開課https://ke.qq.com/course/53102#term_id=100145289 具體詳情請聯繫QQ2435014406數組