偷偷看了點計算機基礎,從此學Java猶如開掛!

大家好,我是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,注意,這是規定。


注意事項

  1. 反碼與補碼不能直接使用二進制轉十進制的規則,轉成對應的十進制得到對應的大小,應該先轉成原碼後纔可以。也就是說原碼纔是直接與大小進行關聯的一種表現形式

  2. 在計算機系統中,數值一律用補碼的形式進行表示與存儲

  3. 正數的原碼、反碼與補碼都是一樣的

  4. 負數原轉反:符號位不變,其餘位取反

  5. 負數原轉補:符號位不變,其餘位取反後加一

  6. 負數補轉反:符號位不變,其餘位減一

  7. 負數補轉原:符號位不變,其餘位減一後取反

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基礎到進階的全套學習資料。大家一起學習進步,成爲大佬!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章