大家好,我是
node哥哥
,一個被Bug耽誤了才藝的程序員。從今天開始,正式帶領大家從0開始學習Java。用大白話聊技術,邊吹牛逼邊討論原理,讓天下沒有難學的Java。喜歡的同學可以關注
我一波,學習的路上互相陪伴,一起成長。
文章目錄
學習Java之前,我想問一個問題,你們覺得有沒有必要學習計算機基礎?
很多人覺得沒有必要看那些枯燥晦澀的基礎知識,還不如直接從HelloWorld開始,先接觸程序,有個印象,代碼跑起來,然後再逐步深入學習程序的語法,到最後使用程序搭建項目,也就是實戰學習法。
首先我不否定這樣的學習方式,確實對某部分同學來說是比較適用的,尤其是一些着急找工作的同學,先學會怎麼去用,至於原理,可以以後慢慢去深入瞭解,畢竟沒有什麼比麪包🍞更重要。
但是對於我們大對數從頭開始學習的同學,我還是建議從計算機的一些基礎小知識開始,瞭解程序設計的思想和常識,這對於我們以後的學習也是非常有幫助的。就好比蓋房子,有的人蓋的是茅草屋,有的人蓋的是泥瓦屋,而有人卻想着蓋二層小洋樓。基礎的深淺程度,直接決定了以後成就的高低。
那麼現在我們就來簡單瞭解下計算機的一些基礎小知識。
1. 機器語言的分類
機器語言
機器語言就是計算機能直接能識別的語言,它是直接用二進制代碼指令表達的計算機語言。它是由一串0和1組成的代碼,有一定的位數,並分成若干段,各段的編碼表示不同的含義。例如下面就是一串簡單的機器碼:
010100100000 // 520
那麼很多人問,爲什麼機器碼是0和1組成的?
因爲機器碼需要控制電腦硬件對程序指令做出響應,0代表低電位,1代表高電位,這樣才能產生邏輯電路,就相當於控制開關一樣,0是關閉,1是打開。
彙編語言
彙編語言是一種面向開發人員的語言,由於機器語言都是0和1,開發人員難以直接操控和使用,那麼就需要使用一些特殊的符號作爲二進制碼的標記,開發人員通過輸入這些特殊的符號來完成指令下發,讓電腦爲我們工作,這些特殊的符號就是彙編語言。計算機不能直接識別彙編語言,需要用一種軟件將彙編語言翻譯成機器語言。它與機器語言的區別在於指令的表示方法上,彙編語言的主體是彙編指令,相比於機器指令,編程人員更容易記住。
MOV AX,1234H //彙編指令: 寄存器AX的內容送到1234H中
101110000011010000010010 //機器指令
高級語言
高級語言常見如:c,c++,java,python,php等等。
它更接近於我們平時正常的人思維,其最大的特點是編寫容易,代碼可讀性好。實現同樣的功能,使用高級語言耗時更少,程序代碼量更短,更容易閱讀。其次,高級語言是可移植的,也就是說,僅需稍作修改甚至不用修改,就可將一段代碼運行在不同類型的計算機上。
print('Hello World') // python版HelloWorld
我們從這個程序可以看出來,高級語言屏蔽了機器內部指令運行細節,我們可以像寫作一樣書寫程序,而不用關心語言內部的實現細節,這大大提高了我們的開發效率,節約開發成本。
當然,其缺點也很明顯,使用高級語言編寫的程序運行時,需要先將其翻譯成低級語言計算機才能運行它,在翻譯過程中可能程會產生一些多餘的部分,運行效率低些。另外,對硬件的可控性相對於低級語言弱些,目標代碼量較大。
2. 進制
推薦使用在線工具轉換進制:
https://tool.oschina.net/hexconvert/
二進制
由數字0和1組成,逢二進一,比如機器碼就是二進制的,是最簡單的計算機可讀懂的代碼,例如 0101
(表示十進制數字5)。
八進制
由1到7組成的數字串,數字最大不會超過7,逢八進一,例如 157
(表示十進制數字111)
十進制
我們日常使用的數字都是十進制類型的,逢十進一,例如 0123456789。
十六進制
由1到9,a-f(或者是A-F,分別代表10-15)組成的數字串,數字最大不會超過15,其中字母是不區分大小寫的,逢十六進一,例如0F83
(表示十進制數3971)
進制轉換
- K進制與十進制數的轉換
假設有一個n+1位的K進制數,它的形式如下:
AnAn-1…A3A2A1A0
則它的大小爲:(也就是對應的我們能看懂的十進制數爲)
A0 * K^0 + A1 * K^1....+ An * K^n //K^n表示K的n次方
二進制數:10101 轉換成 十進制數爲:21
1*2^4 + 0*2^3 + 1*2^2 + 0*2^1+1*2^0 = 21
- 十進制與k進制的轉換
短除法。
舉個栗子:
從圖可以看出,用十進制數21一直除以2,每次得到的餘數倒數就是最後的二進制數10101。同樣,十進制轉八進制、十進制轉十六進制都是一樣的套路,非常簡單。
- 二進制與八進制和十六進制之間轉換
8是2的3次方,16是2的4次方,所以這之間的轉換存在一種快捷方法。以2轉8示例,將2進制從低位到高位,每3個一組,如果是十六進制就每4個一組,高位不足3位的補0,然後將每組依次轉換成對應的十進制,得到的結果就是對應的8進制或者16進制。
二進制10101100101轉八進制:2545
二進制10101100101轉十六進制:565
3. 原碼、反碼、補碼
在計算機中,最小的單位是位,也稱爲比特(bit)。而另一個常用單位是字節,一個字節是8位,也就是8比特,所以我們常用的二進制表示法是8位。
原碼
原碼是一種非常常見的二進制表示形式。在原碼中,爲了區別正數和負數,將二進制中的最高位作爲符號位,如果是0表示正數,如果是1表示負數。
舉個栗子:
0000 0001 // 表示 1
1000 0001 // 表示 -1
反碼
不知道大家有沒有注意到原碼的一個問題,那就是負數參與計算的時候,比如
出現了一個大問題,就是1 + (-1) 不等於0,而等於 -2。
這可咋整?
爲了解決這個問題,聰明的計算機前輩們想到了反碼。原碼轉反碼的規則爲:正數的反碼爲其本身,負數的反碼是符號位不變,其他位取反。取反的規則就是如果是0就變成1,如果是1就變成0。
我們來看下轉成反碼的計算:
得到的結果是1111 1111。
哎?這不對啊,怎麼不是0?
別急,這只是反碼的計算結果,我們將反碼轉成原碼 1111 1111 —> 1000 0000,得到 -0, 也就是0,完全符合預期的結果,也解決了原碼的計算問題。
補碼
反碼解決了負數計算的問題,但是還有一個問題沒有解決,就是 -0 。由於負數最高位的符號位的存在,導致原本八位的二進制數能表示2的8次方即256個數字,使用原碼與反碼卻只能表示255個,這對於我們來說是非常難受的,那麼這少的一個數怎麼彌補上呢?
禿頭的程序員老哥哥們也想出了對應的解決辦法——補碼。
原碼轉補碼的規則:正數的補碼就是其本身,負數的補碼是符號位不變,其餘位數取反(即變成反碼)再加1。
舉個栗子:
原碼:0000 0001 , 補碼:0000 0001
原碼:1000 0001 , 補碼:1111 1111
計算一下:
從上面看出,利用補碼計算我們得到了 0 (而不是 -0 ),解決了少一個數字的問題。
在補碼中,規定了0的表示爲0000 0000,而1000 0000表示的爲-128,注意,這是規定。
注意事項
-
反碼與補碼不能直接使用二進制轉十進制的規則,轉成對應的十進制得到對應的大小,應該先轉成原碼後纔可以。也就是說原碼纔是直接與大小進行關聯的一種表現形式
-
在計算機系統中,數值一律用補碼的形式進行表示與存儲
-
正數的原碼、反碼與補碼都是一樣的
-
負數原轉反:符號位不變,其餘位取反
-
負數原轉補:符號位不變,其餘位取反後加一
-
負數補轉反:符號位不變,其餘位減一
-
負數補轉原:符號位不變,其餘位減一後取反
4. DOS
什麼是DOS
DOS是Disk Operation System的簡寫,是磁盤操作系統的意思,我們可以使用dos命令完成一系列的計算機操作,例如創建文件夾、新建文件、刪除文件等。
爲什麼使用DOS
有了DOS,我們就不必去深入瞭解機器的硬件結構,也不必與死記硬背那些枯燥的機器命令,只需通過一些接近於自然語言的DOS命令,我們就可以在計算機上輕鬆地完成絕大多數的日常操作。
另外,DOS還能有效地管理各種軟硬件資源,對它們進行合理的調度,所有的軟件和硬件都在屬DOS的監控和管理之下,有條不紊地進行着自己的工作。
怎麼使用DOS命令
方式1: win + r 鍵打開這個窗口
輸入cmd回車打開dos黑窗口
方式2:win10 直接搜索,然後點擊命令提示符打開DOS窗口:
常用的DOS命令
- 顯示所有命令:help
這個指令可以幫助我們尋找到我們實際操作需要的指令
- 進入某個磁盤:D: (進入D盤,D不分大小寫)
# 進入D盤
> D:
- 進入某個文件夾: cd 文件夾路徑
# 如果想進入D盤的 csdn/article 目錄,先輸入D: 進入D盤,再輸入cd 文件夾路徑
> D:
> cd D:/csdn/article
# 或者使用相對路徑 cd csdn/article
# 絕對路徑:從根目錄(例如D盤符)下開始找文件,例如 cd D:/csdn/article
# 相對路徑:從當前目錄開始找,例如當前在csdn目錄下,那麼article的相對路徑就是 article, cd article 可以進入article目錄
-
回上一個目錄 cd ..
-
回到根目錄:cd /
-
列舉當前目錄下文件:dir
-
列舉所有目錄和文件: dir /s
-
列舉指定類型文件:dir *.文件後綴
-
創建子目錄: md 目錄名
-
刪除子目錄: rd 目錄名
注意:移除的目錄中不能有子目錄和文件,不能刪除當前目錄
-
拷貝文件:copy [源文件名] [目標文件名]
注意:目標文件的目錄一定要存在
-
重命名文件:ren [原文件名] [修改後的文件名]
-
刪除文件: del 文件名
-
顯示文件樹:tree
-
暫停執行命令:pause
-
中斷操作:Ctrl+C
-
清屏:cls
-
查看日期:date
-
查看操作系統版本: ver
-
查看電腦Mac地址和ip地址: ipconfig /all
-
打開記事本編輯文件:notepad 文件名
-
顯示文本文件內容:type 文件名
-
顯示計算機進程:tasklist
-
自動補全文件名:輸入文件名開頭部分然後按Tab鍵
創作不易,如果您喜歡這篇文章的話,請你 點贊 + 評論 支持一下作者好嗎?您的支持是我創作的源泉哦!喜歡Java,熱衷學習的小夥伴可以加我微信: xia_qing2012 ,私聊我可以獲取最新Java基礎到進階的全套學習資料。大家一起學習進步,成爲大佬!